IT工程師都需要掌握的容器技術(shù)之Docker容器管理
今天這篇文章我們主要了解一下Docker容器管理的一些基礎(chǔ)及其命令的使用方法。
01 運(yùn)行容器
我們先來看看運(yùn)行容器的命令格式,具體如下:
- 1. docker container run [OPTIONS] IMAGE [COMMAND [ARGS...]]
docker run命令后面常跟的參數(shù)如下:
1) -i 或 --interactive, 交互模式。
2) -t 或 --tty, 分配一個偽終端。
3) --rm 在容器退出后自動刪除容器。
4) -p 將容器的端口映射到主機(jī)。
5) -v 或 --volume, 指定數(shù)據(jù)卷
現(xiàn)在我們創(chuàng)建一個容器然后運(yùn)行命令"echo 'Hi chenge'"如下圖所示:
- 1. docker container run ubuntu echo "HI chenge"


如上我們可以看到執(zhí)行過程如下:
1)命令后面跟的鏡像名稱系統(tǒng)會先查詢本地是否有該鏡像,如果沒有就是到遠(yuǎn)端的鏡像倉庫進(jìn)行下載
2)鏡像完成下載后會自動啟動并執(zhí)行創(chuàng)建命令后面跟的命令
3)容器執(zhí)行完命令會自動退出如上圖所示
這邊肯定有讀者問我讓容器執(zhí)行完不讓其自動退出該怎么辦。其實很簡單只要在創(chuàng)建容器時加入讓其持續(xù)運(yùn)行的命令即可,如/bin/bash命令。下面我們創(chuàng)建一個容器讓其持續(xù)運(yùn)行不退出,命令如下所示:
- 1. docker container run -it ubuntu /bin/bash
這邊的-it參數(shù)是打開一個偽終端,創(chuàng)建容器后我們會自動進(jìn)入容器終端中,如下圖:

如果這時我們要退出終端界面該怎么辦呢,有兩種方法:
1)直接通過exit命令退出,執(zhí)行這個命令后我們退出該終端的同時該容器也會停止運(yùn)行

2)通過"Ctrl+P"與"Ctrl+q"的命令進(jìn)行退出,這種方式退出容器會進(jìn)入后臺運(yùn)行并不會停止運(yùn)行

其實我們可以直接在創(chuàng)建容器時加入-d的命令,讓容器自動在后臺運(yùn)行而不需要再進(jìn)入終端再退出這樣繁瑣的操作具體命令如下:
1. docker container run -itd ubuntu /bin/bash

02容器創(chuàng)建
上面章節(jié)介紹的docker run命令其實并不只是創(chuàng)建了容器,它在創(chuàng)建的容器的同時運(yùn)行了容器。我們現(xiàn)在來介紹只創(chuàng)建容器但不運(yùn)行容器的命令,具體命令格式如下:
- 1. # 創(chuàng)建容器命令
- 2. docker container create [OPTIONS] IMAGE [COMMAND] [ARG...]
上面命令會創(chuàng)建指定鏡像的容器,但不會運(yùn)行該容器,其后面常跟的參數(shù)如下所示:
1)--name 給創(chuàng)建的容器指定一個名字
2)--hostname 設(shè)置容器主機(jī)名
3)--network 指定容器網(wǎng)絡(luò)類型,目前容器常用的網(wǎng)絡(luò)類型有none、host及bridge,如果創(chuàng)建容器不指定網(wǎng)絡(luò)類型默認(rèn)的是使用bridge也就是橋接docker0上,在下面的章節(jié)中我們會詳細(xì)講解容器網(wǎng)絡(luò)類型敬請關(guān)注
4)--ulimit 設(shè)置容器資源限制,其命令格式與linux的ulimit用法一致,參數(shù)如下所示:

現(xiàn)在我們通過容器創(chuàng)建命令創(chuàng)建一個容器,同時設(shè)置容器名稱為test1,容器的主機(jī)名為test,網(wǎng)絡(luò)我們使用docker默認(rèn)網(wǎng)絡(luò)(bridge),同時限制容器的進(jìn)程范圍為3000至4000如下所示:

當(dāng)容器創(chuàng)建成功后會主動打印其ID,容器的ID有兩種格式:
1)UUID長標(biāo)格式也就是創(chuàng)建好打印的那一串字符
2)UUID短標(biāo)格式,它是長標(biāo)格式的縮寫

在我們操作容器時既可以用長標(biāo)UUID也可以用短標(biāo)UUID(這邊要注意短標(biāo)UUID有可能重復(fù)畢竟是截的長標(biāo)的UUID部分內(nèi)容),同時還可以通過容器name來操作容器。
03 容器刪除
刪除容器的具體命令如下:
- 1. # 刪除容器
- 2. docker container rm [OPTIONS] CONTAINER [CONTAINER...]
我們現(xiàn)在把剛才創(chuàng)建的test1容器進(jìn)行刪除如下所示:

如果我們要批量刪除容器可以執(zhí)行如下命令:
- 1. # 批量刪除容器,其中docker container ls -aq是列出當(dāng)前存在的所有容器的UUID,-f 為強(qiáng)制刪除
- 2. docker container rm -f $(docker container ls -aq)
我們現(xiàn)在刪除系統(tǒng)中所有容器具體如下所示:

04 容器啟動、停止與重啟
我們先來看看容器啟動的命令格式
- 1. # 啟動容器
- 2. docker container start [OPTIONS] CONTAINER [CONTAINER...]
我們將剛才創(chuàng)建的test1容器進(jìn)行啟動,啟動后容器的狀態(tài)將從created變?yōu)閡p狀態(tài),具體如下所示:

接著我們來看看容器停止的命令格式
- 1. # 停止容器
- 2. docker container stop CONTAINER [CONTAINER...]
我們將剛才啟動的容器進(jìn)行停止具體如下所示:

現(xiàn)在我們將停止的容器test1通過容器的重啟命令進(jìn)行重新啟動,重啟的命令格式如下所示
- 1. # 重啟容器
- 2. docker container restart CONTAINER [CONTAINER...]

05 容器的暫停與恢復(fù)
容器暫停的命令格式如下:
- 1. # 暫停容器
- 2. docker container pause CONTAINER [CONTAINER...]
我們將剛才重啟的容器進(jìn)行暫停,此時容器狀態(tài)會從UP狀態(tài)切換到paused的狀態(tài)

現(xiàn)在我們再將這個暫停的容器進(jìn)行恢復(fù),容器恢復(fù)命令如下所示
- 1. # 恢復(fù)容器
- 2. docker container unpause CONTAINER [CONTAINER...]

06 進(jìn)入運(yùn)行中容器、執(zhí)行容器命令、容器日志管理及容器進(jìn)程管理
進(jìn)入容器的前提是容器在創(chuàng)建時開了偽終端,具體如下所示:
- 1. # 進(jìn)入容器
- 2. docker container attach [OPTIONS] CONTAINER

其實我們還有一種方式進(jìn)入容器,也就是我們接下來要講的執(zhí)行容器命令exec,我們再通過exec來進(jìn)入容器據(jù)如下所示:
- 1. # exec執(zhí)行命令格式
- 2. docker container exec [OPTIONS] CONTAINER COMMAND [ARG...]

attach與exec命令進(jìn)入容器主要的區(qū)別如下:
1)attach是直接進(jìn)入容器的終端不會啟動新的進(jìn)程,在查看容器終端輸出多用該命令
2)exec是在容器中打開新的終端,并且啟動了新的進(jìn)程,我們一般主要以該命令進(jìn)行容器操作
接下來我們學(xué)習(xí)一下容器的日志管理,容器日志管理命令格式如下:
- 1. # 查看容器日志
- 2. docker container logs [OPTIONS] CONTAINER
我們重新創(chuàng)建一個test2容器通過執(zhí)行shell循環(huán)語句讓其不停的打印"HI chenge"字符串,具體如下

我們通過容器日志查看命令來查看在容器終端中打印的信息

最后我們來學(xué)習(xí)怎么查看容器中的進(jìn)程,查看容器進(jìn)程的命令格式如下所示
- 1. # 查看容器進(jìn)程
- 2. docker container top CONTAINER
我們查看一下剛才創(chuàng)建的test1與test2的容器進(jìn)程具體如下:

以上就是我們Docker容器管理的全部內(nèi)容,是不是很簡單這邊建議大家跟著文章進(jìn)行實操一遍,這樣會更加容易的記住這些容器常用管理命令。