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


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

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

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

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

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

現在我們通過容器創建命令創建一個容器,同時設置容器名稱為test1,容器的主機名為test,網絡我們使用docker默認網絡(bridge),同時限制容器的進程范圍為3000至4000如下所示:

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

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

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

04 容器啟動、停止與重啟
我們先來看看容器啟動的命令格式
- 1. # 啟動容器
- 2. docker container start [OPTIONS] CONTAINER [CONTAINER...]
我們將剛才創建的test1容器進行啟動,啟動后容器的狀態將從created變為up狀態,具體如下所示:

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

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

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

現在我們再將這個暫停的容器進行恢復,容器恢復命令如下所示
- 1. # 恢復容器
- 2. docker container unpause CONTAINER [CONTAINER...]

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

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

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

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

最后我們來學習怎么查看容器中的進程,查看容器進程的命令格式如下所示
- 1. # 查看容器進程
- 2. docker container top CONTAINER
我們查看一下剛才創建的test1與test2的容器進程具體如下:

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