維護和操作 Docker 容器
瞭解如何建立 Dockerfile 以及如何使用該 Dockerfile 構建 Docker 映象後,我們可以繼續深入研究操作 Docker 容器的更高階方法。當我們談論操作 Docker 容器時,包括執行、列出、重啟、清理懸掛容器、以互動式和分離式模式執行容器、使用可執行映象建立容器、使用 exec 命令在 Docker 容器內執行命令以及在容器內啟動 bash、訪問 Docker 容器的日誌以及殺死或停止 Docker 容器。
事不宜遲,讓我們深入探討操作 Docker 容器。
執行 Docker 容器
使用 docker build 命令構建映象後,可以使用 docker run 命令執行與該映象關聯的容器。
sudo docker run <image−name>
此命令簡單地執行指定 Docker 映象的一個例項。如果您之前已經建立了一個映象,並且想要執行該映象的另一個例項,則可以使用 docker create 命令建立另一個容器。
sudo docker create <image−name>
如果您之前已經建立了一個 Docker 容器,並且現在想要執行該容器,則需要擁有其 ID。要找出容器的 ID,可以使用以下命令:
sudo docker ps −a
獲得容器的 ID 後,可以使用以下命令啟動容器:
sudo docker start <container−id>
如果希望容器在啟動時啟動 bash,則必須將 attach 標誌與 docker start 命令一起使用。
sudo docker start −a <container−id>
列出所有 Docker 容器
如果要顯示所有 Docker 容器的列表,可以使用以下命令。
sudo docker ps −a
上述命令顯示容器 ID、關聯的映象名稱、建立時間、狀態等,所有 Docker 容器在您的本地機器上。
清理所有懸掛容器
要清理所有已退出的容器,需要獲取狀態為已退出的容器的 ID。您可以使用上面討論的 docker ps -a 命令來做到這一點。獲取容器 ID 後,可以使用以下命令刪除容器:
sudo docker rm <container−id>
如果要從系統中刪除所有 Docker 物件,可以使用 prune 命令。
sudo docker system prune
重啟 Docker 容器
重啟 Docker 容器首先會殺死正在執行的容器,然後重新啟動它。它與 start 命令不同,因為 start 命令用於啟動當前未執行的容器。
sudo docker restart <container−id>
以互動模式執行 Docker 容器
您可以以互動模式啟動 Docker 容器 bash,並在該 bash 中執行命令,就像在主機機器的終端中執行命令一樣。如果您以互動模式啟動 python 容器,則可以使用 python shell;如果您以互動模式啟動 ubuntu 容器,則可以使用 ubuntu 終端。
sudo docker run −it ubuntu
執行可執行映象的容器
如果您的 Docker 映象是可執行的,即它具有與之關聯的 CMD 或 ENTRYPOINT 指令,則可以在 docker run 命令中傳遞引數,以便在 Docker 容器啟動時執行它。
sudo docker run <image−name> <args>
例如,要列出 ubuntu 容器的根目錄中的所有檔案,可以使用以下命令:
sudo docker run ubuntu ls
以分離模式執行 Docker 容器
以分離模式執行 Docker 容器,即使關閉終端,它也會在後臺執行。可以使用 -d 標誌來實現此目的。
sudo docker run −d ubuntu
啟動 Docker 容器的 bash
要啟動 Docker 容器的 bash,以便您可以在容器內執行命令來安裝軟體包或操作檔案系統,可以使用以下命令:
sudo docker run −it <image−name> /bin/bash
或者
sudo docker exec −it <container−id> sh
在容器內直接執行命令
您還可以使用 docker exec 命令,在 Docker 容器內直接執行指定的命令。
sudo docker exec <container−id> <command>
sudo docker exec −it <container−id> /bin/bash
停止/殺死 Docker 容器
要優雅地停止容器,可以使用 docker stop 命令。它首先發送名為 SIGTERM 的訊號,如果未停止則傳送 SIGKILL 訊號。
sudo docker stop <container−id>
要直接停止或殺死容器,請使用以下命令:
sudo docker kill <container−id>
總之,在本文中,我們看到了幾乎所有您需要無縫維護和操作 Docker 容器的重要命令。