靈活運用 Docker - 操作 Docker 與 Container 常用指令

Last updated on

本篇為 靈活運用 Docker 打造高效的容器化應用環境 系列的文章之一。內容由現有的文章中,將相關的內容整理於此。後續不定期編修與更新內容。

Docker command

若需確認機器上運行的 Docker 版本,可以使用以下指令來進行查詢。

docker --version

# 取回的資料較為詳細
docker version
Docker version
Docker version

Image

在建立運行服務的 Container 時,一定要指定使用的 Image。Docker 才有辦法建立基於 Image 的 Container。所以說 Image 是 Docker 的核心,也不為過。

可以使用 docker image --help 查詢所有與 Image 相關的操作。

docker image --help
docker image --help

操作 Image 的指令很多,但最常用的指令有四種。

# 取得本地當下存放的 Image
# 可以檢視到 Image 的名稱、建立時間與大小
docker image ls

# 從 remote repository 下載 image,若沒有指定 Tag,預設會下載 latest
# 預設位置為 Docker Hub,可找到許多現成的 Image。
docker pull NAME:[Tag]

# 執行 Image,建立 Container
docker run NAME:[Tag]

# 移除 image
docker image rm IMAGE
docker rmi IMAGE

接著來實際操作指令,進行 Image 的 查詢、下載、移除等動作。

docker image ls
docker image ls
docker pull
docker pull
docker image ls
docker image ls
docker remove image
docker remove image
# create/build image
docker image build [dockerfile path]

當發現沒有適合的 Image 時,也可以自行建立 Image。建立 Image 時,Docker 會依據 YAML 格式所撰寫的 Dockerfile 內參數設定,來建立 Image。在 dockerfile 會進一步介紹。

Container

常用的 Container 指令如下

# 查看目前的 container 清單
docker ps
docker container ls

# 啟動已停止的 Container
docker start [CONTAINER ID]
docker container start [CONTAINER ID]

# 停止執行中的 Container
docker start [CONTAINER ID]
docker container start [CONTAINER ID]

先前,已經從 Docker Hub 取得 busybox 的 image,接著,我們使用 docker run busybox 的方式,告知 Docker Engine ,以 busybox Image 啟動 container。

docker run
docker run

在啟動 container 後,可以使用下述的指令,進行確認 container 目前的狀態。

# 查看目前的 container 清單
# 作法一
docker container ls
# 作法二
docker ps

但是,執行上述的指令取得的結果,會發現查不到任何資料,找不到與 busybox 相關的 container。

這是因為 busybox 在完成動作後,就會直接結束。而 docker ps 只會列出執行中的 container。所以必需在加上 -a 的參數,要求列出所有的 Container。

docker container ls
docker container ls
# 啟動已停止的 Container
# 作法一
docker start [CONTAINER ID]
# 作法二
docker container start [CONTAINER ID]

假若要執行的 container 己經存在,可以運用 start 來啟動己經停止的 container。在下圖可以發現的狀態有所變動。

docker container start
docker container start

若看到己經執行完成的 container 一直存在清單之中,覺得怪不舒服。可以用 docker conatiner prune 將一口氣已停止的 container 刪除。

下這個指令,請務必、務必、務必確認已停止的 Container 沒有需要保留,不然清除後可是救不回來的。

# remove stopped container
docker conatiner prune
container prune
container prune

相同的,如果要一口氣移除無用的 container、Volume、Network,則可以使用 docker system prune

# remove unused data
docker system prune

補充資料

▶ 延伸閱讀

▶ 外部文章


Series
靈活運用 Docker 打造高效的容器化應用環境