這篇是我第一次接觸 Docker 時留下的入門筆記,涵蓋在 CentOS 7 上安裝 Docker、用 docker pull / run / exec / ps / rm / rmi 管理映象檔與容器,以及 volume 掛載、docker build、entrypoint、ENV、HEALTHCHECK 等進階用法和當時遇到的報錯。適合想快速掌握 Docker 常用指令的新手參考。
怎麼在 CentOS 7 上安裝 Docker?
安裝步驟直接照官方文件走即可:https://docs.docker.com/engine/install/centos/。裝完之後就可以用下面的測試指令確認環境正常。
Docker 有哪些測試用基本指令?
- 顯示 docker 的資訊:
$ docker info
- 顯示 docker 的版本:
$ docker version
怎麼取得指定版本的 image?
用 docker pull 取得 image;如果不指定版本,該版本則為 latest:
$ docker pull [Image 名稱]:[Image 版本]
範例:
$ docker pull hello-world
$ docker pull ubuntu
$ docker pull ubuntu:14.04
顯示 docker 的 images 清單:
$ docker images
怎麼透過 image 執行並產生一個新的 container?
$ docker run [Image 名稱]:[Image 版本] [執行指令]
範例:
$ docker run hello-world
$ docker run ubuntu /bin/echo "example 1 - ubuntu"
$ docker run ubuntu:14.04 /bin/echo "example 2 - ubuntu:14.04"
docker run 常用的 [OPTIONS]:
| Option | 說明 |
|---|---|
-i, --interactive | 互動模式 |
-t, --tty | 配置一個終端機 |
-d, --detach | 在背景執行 |
完整格式:
$ docker run [OPTIONS] [Image 名稱]:[Image 版本] [執行指令]
範例——進入互動模式的 bash:
$ docker run -i -t ubuntu:14.04 bash
$ exit
怎麼查看正在執行的 containers?
- 查看正在執行的 containers:
$ docker ps
- 查看所有的 containers:
$ docker ps -a
怎麼對正在執行的 container 下指令?
用 docker exec,常用 [OPTIONS] 同樣是 -i, --interactive(互動模式)與 -t, --tty(配置一個終端機):
docker exec [OPTIONS] [Container ID] [執行指令]
範例——產生一個 container 在背景執行,再進去操作:
$ docker run -i -t -d ubuntu:14.04 bash
$ docker ps
$ docker exec -i -t [Container ID] bash
$ exit
怎麼啟動、停止與重新啟動 container?
- 啟動 docker container:
$ docker start [Container ID]
- 停止 docker container:
$ docker stop [Container ID]
- 重新啟動 docker container:
$ docker restart [Container ID]
完整走一遍的範例:
$ docker run -i -t -d ubuntu bash
$ docker ps
$ docker stop [Container ID]
$ docker ps
$ docker start [Container ID]
$ docker ps
$ docker restart [Container ID]
怎麼刪除 container 與 image?
- 刪除 container:
$ docker rm [Container ID]
範例:
$ docker ps
$ docker stop [Container ID]
$ docker rm [Container ID]
$ docker ps -a
- 刪除 image:
$ docker rmi [Image ID]
注意:刪除 image 前必需將透過該 image 所產生的 container 移除。範例——移除 hello-world image 所產生的 container,再移除 image 本身:
$ docker ps -a
$ docker rm [Container ID]
$ docker ps -a
$ docker images
$ docker rmi [Image ID]
$ docker images
有哪些一次處理全部的 Docker 小技巧?
- 停止所有的 containers:
$ docker stop $(docker ps -a -q)
- 刪除所有的 containers:
$ docker rm $(docker ps -a -q)
- 刪除所有的 images:
$ docker rmi $(docker images -a -q)
怎麼讓容器停止後還能保留資料(掛載 volume)?
Docker 容器不會保存它們產生的數據。該過程完成後,容器將停止運行,並且容器中的所有物品都將被移走。如果要在容器停止後仍要存儲持久性數據,則需要啟用共享存儲卷。
對於安裝卷,請使用 -v 屬性以及要在其中保存數據的目錄的指定位置,然後是該數據在容器內的位置:
-v [/host/volume/location]:[/container/storage]
整個 docker container run 命令是:
docker container run -v [/host/volume/location]:[/container/storage] [docker_image]
Dockerfile 與 run 進階用法有哪些?
- docker file 寫法 / run 寫法:https://docs.docker.com/engine/reference/run/
- build(
--no-cache強制重建):
docker build -t fmsdocker . --no-cache
- entrypoint:
docker run --entrypoint=/bin/hostname test
- ENV:
ENV HOSTNAME testhost
export today=Wednesday
docker run -e "deep=purple" -e today --rm alpine env
- HEALTHCHECK:
docker run --name=test -d \
--health-cmd='stat /etc/passwd || exit 1' \
--health-interval=2s \
busybox sleep 1d
Dockerfile 內的寫法:
HEALTHCHECK --interval=5s --timeout=3s \
CMD curl ${HOSTNAME}:1111/admin/getServerStats?auser=admin&apswd=pass.123 || exit 1
當時遇到哪些報錯與參考資源?
常見問題
Docker 的 image 和 container 有什麼差別?
image 是唯讀的範本,container 是用 image 執行起來的實例。同一個 image 可以同時跑出多個 container,container 停止後預設不保留資料。
刪除 image 時出現錯誤怎麼辦?
必須先把透過該 image 產生的所有 container 刪除,才能 docker rmi 刪除 image。可以用 docker ps -a 找出 container,先 docker rm 再 docker rmi。
如何一次停止或刪除所有 containers?
docker stop $(docker ps -a -q) 可以停止全部,docker rm $(docker ps -a -q) 可以刪除全部。docker ps -a -q 會輸出所有 container 的 ID 當成參數傳入。
容器裡的資料在停止後會消失嗎?
會。Docker 容器不會保存它產生的數據,過程結束後容器內的所有物品都會被移走。要持久化資料需用 -v [/host/volume/location]:[/container/storage] 掛載共享存儲卷。
不指定版本 pull image 會拿到什麼?
會拿到標記為 latest 的版本。例如 docker pull ubuntu 等同於 docker pull ubuntu:latest,要固定版本就要明確指定如 ubuntu:14.04。
參考資料
延伸閱讀
- docker pull failed to register layer 錯誤怎麼解?:同樣聚焦 Docker、DevOps,可接著比較不同情境的做法。
- Dockerfile 簡單範例:從零打造你的第一個 Docker Image:同樣聚焦 Docker、DevOps,可接著比較不同情境的做法。
- Docker 刪除所有 tag 為 None 的 image:清理 dangling images 指令:同樣聚焦 Docker、DevOps,可接著比較不同情境的做法。
最後更新
2026-08-28(原文發布於 2020-11-13,本文保留原始筆記內容並補上 GEO 結構。)
關於作者
Claire Chang | 企業 AI 導入與流程轉型顧問。專注於 AI Agent 架構設計、ERP 系統整合與企業 AI 治理。
首次發布:2020-11-13
