技術文章 · IT 指令工具箱

Docker 常用指令:Container、Image、Log、Port 與除錯

整理 docker ps、run、exec、logs、inspect、stats、cp、stop、image、volume、network 與容器排錯常用指令。

作者 Steve Chen · 發布  · 約 6 分鐘閱讀

IT 指令工具箱 — 廷皓技術專欄插圖

Docker 排查先分清楚 image、container、volume 與 network。容器顯示 Up 不代表應用健康;要一起看 health status、log、監聽 port 與實際 HTTP 回應。

27 組範例Docker EngineDocker Desktop查核日期:2026-08-11
動手前:不要把 Docker socket 暴露到網路,也不要隨意用 --privileged 或掛載主機根目錄。刪容器前確認資料是否在 volume;秘密不要直接寫在 command 或 image layer。

查看與啟動容器

查看執行中容器Docker

docker ps

顯示名稱、image、狀態與 port mapping。

查看所有容器Docker

docker ps -a

包含已停止與失敗退出的容器。

自訂列表欄位Docker

docker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}'

適合日常巡檢。

背景啟動 Web 容器Docker

docker run -d --name web-test -p 127.0.0.1:8080:80 nginx:stable

只綁 localhost,避免測試服務直接對外。

自動移除的一次性容器Docker

docker run --rm alpine:3.20 uname -a

執行結束就刪 container;image 仍保留。

傳入唯讀環境檔Docker

docker run --rm --env-file .env.example myapp:1.2.3

環境檔可能含秘密,檔案權限與版本庫排除要處理。

停止容器Docker

docker stop --time 30 web-test

先給應用 30 秒優雅停止,再決定後續。

重新啟動容器Docker

docker restart --time 30 web-test

重啟前先抓 log 與 inspect,避免線索消失。

Log、程序與容器內檢查

看最近 100 行 logDocker

docker logs --tail 100 web-test

stdout/stderr 是否完整取決於應用寫 log 方式。

持續追 logDocker

docker logs -f --since 10m web-test

按 Ctrl+C 只停止追蹤,不會停容器。

顯示時間戳Docker

docker logs --timestamps --tail 100 web-test

注意容器與主機時區可能不同。

查看容器內程序Docker

docker top web-test

不需容器內安裝 ps。

在容器內執行 shellDocker

docker exec -it web-test sh

image 不一定有 bash;正式環境不要直接手改容器檔案。

在容器內執行唯讀檢查Docker

docker exec web-test nginx -T

輸出可能含路徑與設定,分享前檢查。

從容器複製檔案Docker

docker cp web-test:/var/log/app/error.log .\error.log

來源路徑需存在;檔案可能含敏感資料。

複製檔案進測試容器Docker

docker cp .\test.conf web-test:/tmp/test.conf

只放 /tmp,避免直接覆寫正式設定。

Inspect、資源與映像

查看容器完整 metadataDocker

docker inspect web-test

可能含環境變數與秘密,勿整份公開。

只看 IP 位址Docker

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' web-test

多 network 時會輸出多個值。

查看健康狀態Docker

docker inspect -f '{{json .State.Health}}' web-test

image 沒定義 HEALTHCHECK 時不會有狀態。

即時資源用量Docker

docker stats --no-stream

短時間快照不代表尖峰,需搭配監控。

查看容器檔案變更Docker

docker diff web-test

A/C/D 代表新增、變更、刪除;不適合當持久化方式。

查看 imagesDocker

docker image ls

tag 可移動,正式部署最好鎖定版本或 digest。

查看 image 歷史Docker

docker image history --no-trunc myapp:1.2.3

history 可能暴露 build command;秘密不應進 layer。

拉指定版本 imageDocker

docker pull nginx:1.26.2

避免正式環境只用 latest。

查看 volumeDocker

docker volume ls

unused 不等於可刪,先查掛載與備份。

查看 networkDocker

docker network ls

bridge、host、overlay 行為不同。

查看單一 networkDocker

docker network inspect bridge

可看到 subnet、gateway 與連接容器。

怎麼確認有做對

  • 用 inspect 確認 image、mount、network、restart policy 與 health。
  • 從主機實際 curl 映射 port,不只看 docker ps。
  • 重建前確認 volume 有備份並做過還原測試。

常見錯誤

  • 把容器內手改當正式修復,重建後全部消失。
  • 使用 latest 而沒有版本或 digest。
  • 看到 Up 就認定服務健康。
  • 清理 volume 前沒確認資料與備份。

版本與官方文件

參數會隨工具版本與作業系統實作改變。正式環境先用 --help、-h 或系統內建說明確認,再以當版官方文件為準。

聯絡廷皓討論 看更多文章