目錄
Docker 指令大全(速查表)
本頁整理日常最常用的 Docker 指令,以 Docker 29 為準。每個指令的詳細說明與實際輸出請點選各章節的連結。最後一節整理了本教學實測時發現的常見陷阱。
容器
| 指令 | 說明 |
|---|---|
docker run -d --name web -p 8080:80 nginx:1.30 | 背景執行容器並對應連接埠 |
docker run -it --rm ubuntu:26.04 bash | 互動式執行,結束後自動刪除 |
docker ps | 列出執行中的容器 |
docker ps -a | 列出所有容器 |
docker stop web | 停止容器 |
docker start web | 啟動已停止的容器 |
docker restart web | 重新啟動 |
docker rm web | 刪除已停止的容器 |
docker rm -f web | 強制刪除執行中的容器 |
docker logs -f web | 追蹤容器日誌 |
docker logs --tail 100 web | 最後 100 行日誌 |
docker exec -it web sh | 進入容器的 shell |
docker cp web:/path/file . | 從容器複製檔案到主機 |
docker inspect web | 查看容器詳細資訊 |
docker stats | 即時資源使用量 |
docker top web | 容器內的程序 |
docker port web | 查看連接埠對應 |
docker update --restart unless-stopped web | 修改重啟策略 |
docker run --init ... | 用小型 init 當 PID 1,正確轉發停止訊號 |
延伸閱讀:docker run 參數、容器生命週期、查看日誌與除錯
映像檔
| 指令 | 說明 |
|---|---|
docker images | 列出本機映像檔 |
docker images --tree | 顯示多平台映像檔包含的平台 |
docker pull nginx:1.30 | 下載映像檔 |
docker tag myapp user/myapp:1.0 | 加上新的名稱/標籤 |
docker push user/myapp:1.0 | 推送到 Registry |
docker rmi nginx:1.30 | 刪除映像檔 |
docker history nginx:1.30 | 查看分層 |
docker buildx imagetools inspect nginx:1.30-alpine | 查看遠端映像檔支援的平台 |
docker save -o img.tar myapp | 匯出成檔案 |
docker load -i img.tar | 從檔案匯入 |
docker login / docker logout | 登入 / 登出 Registry |
延伸閱讀:映像檔、推送到 Docker Hub
建置
| 指令 | 說明 |
|---|---|
docker build -t myapp . | 用目前資料夾的 Dockerfile 建置 |
docker build -f Dockerfile.prod -t myapp . | 指定 Dockerfile |
docker build --no-cache -t myapp . | 不使用快取 |
docker build --pull -t myapp . | 重新拉取基礎映像檔 |
docker build --target dev -t myapp:dev . | 只建置到某個階段 |
docker build --build-arg VERSION=1.2 . | 傳入建置參數(不要用來傳密碼) |
docker build --secret id=token,env=TOKEN . | 傳入建置用的機密,不會留在映像檔 |
docker build --progress plain . | 顯示完整的建置輸出 |
docker buildx build --platform linux/amd64,linux/arm64 -t user/app --push . | 多平台建置並推送 |
延伸閱讀:Dockerfile 指令大全、建置快取與最佳化、多階段建置、多平台映像檔
Volume
| 指令 | 說明 |
|---|---|
docker volume create data | 建立 Volume |
docker volume ls | 列出 Volume |
docker volume inspect data | 查看詳細資訊 |
docker volume rm data | 刪除 Volume |
docker run -v data:/app/data myapp | 掛載具名 Volume |
docker run -v "$(pwd):/app" myapp | 掛載目前資料夾 |
延伸閱讀:Volume 與資料保存
網路
| 指令 | 說明 |
|---|---|
docker network create appnet | 建立自訂網路 |
docker network ls | 列出網路 |
docker network inspect appnet | 查看網路中的容器 |
docker run --network appnet --name db postgres:18 | 讓容器加入網路 |
docker network connect appnet web | 把執行中的容器加入網路 |
docker network rm appnet | 刪除網路 |
延伸閱讀:網路與容器互連
Docker Compose
| 指令 | 說明 |
|---|---|
docker compose up -d | 背景啟動所有服務 |
docker compose up -d --build | 重新建置後啟動 |
docker compose up -d --wait | 等所有服務 healthy 才返回 |
docker compose up -d app | 只更新/重建某個服務 |
docker compose down | 停止並刪除容器與網路 |
docker compose down -v | 連同 Volume 一起刪除 |
docker compose ps | 服務狀態 |
docker compose logs -f app | 追蹤某服務的日誌 |
docker compose exec app sh | 進入服務容器 |
docker compose run --rm app npm test | 執行一次性指令 |
docker compose pull | 下載最新映像檔 |
docker compose restart app | 重啟服務(不會套用修改過的設定) |
docker compose watch | 檔案變動時自動同步或重建(開發用) |
docker compose --profile tools up -d | 一併啟動 profile 中的服務 |
docker compose config | 檢查最終設定 |
延伸閱讀:Docker Compose 入門、docker compose 指令
清理
| 指令 | 說明 |
|---|---|
docker system df | 查看空間使用 |
docker container prune | 刪除已停止的容器 |
docker image prune -a | 刪除未使用的映像檔 |
docker builder prune | 清除建置快取 |
docker builder prune --filter until=168h | 只清除 7 天以上沒用的建置快取 |
docker volume prune | 刪除未使用的匿名 Volume |
docker volume prune -a | 刪除所有未使用的 Volume,含具名的資料庫資料 |
docker system prune | 綜合清理(不含 Volume) |
docker system prune --volumes | 綜合清理,加上匿名 Volume(Docker 23 起不含具名 Volume) |
延伸閱讀:清理硬碟空間
系統資訊
| 指令 | 說明 |
|---|---|
docker version | 用戶端與伺服器版本 |
docker info | Docker 系統資訊 |
docker events | 即時事件 |
docker context ls | 列出可連線的 Docker 環境 |
常用參數速記
| 參數 | 意思 |
|---|---|
-d | 背景執行 |
-it | 互動模式 + 終端機 |
-p 主機:容器 | 連接埠對應 |
-v 來源:容器路徑 | 掛載 |
-e KEY=VALUE | 環境變數 |
--name | 容器名稱 |
--rm | 結束後自動刪除 |
--network | 指定網路 |
--restart | 重啟策略 |
-f | 強制(rm、rmi)或追蹤(logs) |
常見陷阱(本教學實測)
| 現象 | 原因與解法 | 章節 |
|---|---|---|
docker stop 要等 10 秒 | 程式是 PID 1 且沒有處理 SIGTERM。在程式中處理,或加 --init | Node.js 應用 |
容器名稱叫 web 時連線到 127.0.53.53 | .web 是頂級網域,名稱被當成外部網域解析。換個名稱 | docker run 參數 |
postgres:18 啟動就退出 | 18 版要掛載 /var/lib/postgresql,不是 /var/lib/postgresql/data | PostgreSQL |
| 資料庫還沒好就回報 healthy | pg_isready、mysqladmin ping 要加 -h 127.0.0.1 | MySQL、PostgreSQL |
| Redis 密碼錯了健康檢查仍通過 | redis-cli ping 錯誤時結束代碼仍為 0,加 | grep -q PONG | Redis |
改了 MYSQL_ROOT_PASSWORD 沒效果 | 密碼變數只在第一次初始化時使用 | MySQL |
| 改了設定檔,容器內還是舊的 | 單一檔案掛載時,編輯器存檔會換掉檔案。重啟容器或改掛資料夾 | Nginx |
--env-file 的值多了引號 | docker run --env-file 不會去掉引號,Compose 的 env_file 會 | 環境變數 |
rm 刪掉的機密仍在映像檔中 | 每一層都保留內容;ARG、ENV 也看得到。用 --secret | 安全最佳實務 |
exec format error | CPU 架構不同,用 --platform 或多平台建置 | 多平台映像檔 |
常見問題
指令太多記不住怎麼辦?
先記住 run、ps、logs、exec、stop、rm、build、compose up/down 這幾個,其他需要時查本頁或 docker 指令 --help。
哪裡有每個指令的完整參數?
常用指令的完整參數與範例見「指令參考」分類,例如 [docker build](/zh-tw/docker/docker-build/)、[docker ps](/zh-tw/docker/docker-ps/)。
更新於 2026年10月14日