全部速查表

Docker 命令速查

日常高頻 Docker CLI 命令快速參考:容器生命週期、映像檔建置、日誌 / exec、網絡、磁碟區、Compose、Registry 與系統清理——附常用參數與實作範例。

46 條命令

容器生命週期

docker run <image>

從映像檔建立並啟動新的容器。

-d 背景執行;-it 互動式 TTY;--name 指定名稱;-p host:container 發佈埠;-v 掛載磁碟區;-e KEY=VAL 環境變數;--rm 結束後自動刪除;--restart=always|unless-stopped|on-failure

docker run -d --name web -p 8080:80 -v $PWD:/usr/share/nginx/html:ro nginx:alpine
docker start|stop|restart <container>

啟動、停止或重啟既有容器(依名稱或 id)。

-t N 殺掉前等待秒數(預設 10)

docker restart web && docker logs --tail 50 web
docker rm <container>

刪除一個或多個已停止的容器。

-f 強制刪除執行中的容器;-v 同時刪除匿名磁碟區

docker rm -f $(docker ps -aq)
docker ps

列出容器(預設只顯示執行中)。

-a 全部;-q 安靜(只列 id);-s 附容量;--format go-template;--filter status|name=...

docker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}'
docker rename <c> <new>

重新命名一個容器。

docker rename web-1 gateway-web
docker update <c>

在執行時更新容器的資源限制或重啟策略。

--cpus N;--memory SIZE;--memory-swap SIZE;--restart 策略

docker update --cpus 1.5 --memory 1g api
docker wait <c>

阻塞直到容器停止,然後輸出其退出碼。

docker wait db && echo "db stopped"
docker top <c>

顯示容器內正在執行的程式(即主機 PID 命名空間的 ps)。

docker top web

日誌與 Exec

docker logs <c>

取得容器的日誌。

-f 持續追蹤;--tail N;--since 時間戳|時長;-t 附時間戳;--details

docker logs -f --tail 200 -t api | grep ERROR
docker exec -it <c> <cmd>

在執行中的容器內執行命令(常用於開啟互動 shell)。

-i 保持 STDIN 開啟;-t 配置偽 TTY;-u 指定使用者;-w 工作目錄;-e KEY=VAL

docker exec -it -u postgres db psql -U postgres app_production
docker attach <c>

將本地 STDIN/STDOUT 附加到執行中的容器(等同 `docker start -i`)。

--sig-proxy 代理信號;--no-stdin

docker attach web && Ctrl-p Ctrl-q 卸離
docker cp <c>:<src> <dest>

在容器與本地檔案系統之間複製檔案/資料夾。

-L 跟隨符號連結;-a 歸檔模式

docker cp db:/var/lib/postgresql/data ./pgdata

檢視

docker inspect <obj>

取得 Docker 物件(容器、映像檔、磁碟區、網絡)的低階資訊。

-f go-template;--type container|image|network|volume;-s 容量

docker inspect -f '{{.NetworkSettings.IPAddress}}' web
docker stats

即時串流顯示執行中容器的 CPU/記憶體/網絡/磁碟用量。

--no-stream 只取一次;-a 全部(含已停止);--format;--no-trunc

docker stats --format 'table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}'
docker diff <c>

檢視容器檔案系統的變更(新增/變更/刪除)。

docker diff web | head -20

映像檔操作

docker pull <image>[:tag]

從 Registry 拉取映像檔(或整個倉庫)。

-a 所有標籤版本;--platform linux/amd64;-q 安靜;--disable-content-trust

docker pull --platform linux/amd64 nginx:1.27-alpine
docker images

列出本地守護行程中的映像檔。

-a 全部(含中介層);-q 只列 id;--digests;--filter dangling=true

docker images --format '{{.Repository}}:{{.Tag}}\t{{.Size}}' | sort -k2 -h | tail -20
docker build <path>

依 Dockerfile 建置映像檔。

-t name:tag;-f Dockerfile 路徑;--no-cache;--build-arg KEY=VAL;--target stage;--progress=plain;--platform

docker build -t myapp:dev --build-arg NODE_ENV=development --progress=plain .
docker tag <src> <dest>

為既有映像檔建立一個新標籤(別名/推送目標)。

docker tag myapp:dev registry.example.com/team/myapp:1.2.0
docker push <image>

將映像檔(或倉庫)上傳到 Registry。

--disable-content-trust;-a 所有標籤變體;--quiet

docker push registry.example.com/team/myapp:1.2.0
docker rmi <image>

刪除一個或多個映像檔。

-f 強制(連帶移除子層的標籤);--no-prune 保留已取消標籤的父層

docker rmi -f $(docker images --filter 'dangling=true' -q)
docker image prune / docker save / docker load

回收空間(過濾孤立/超過 X 小時的映像);將映像檔匯出/匯入 tar。

-a 全部;--filter 'until=24h';-o file.tar;-i file.tar

docker image prune -af --filter 'until=72h' && docker save -o nginx.tar nginx:alpine
docker history <image>

顯示映像檔的層級/中介歷史。

--no-trunc;--human;-q 只列 id

docker history --no-trunc --human myapp:dev

網絡

docker network ls

列出網絡。

--filter driver=bridge|overlay;-q 只列 id;--format

docker network ls --filter driver=bridge --format '{{.Name}}'
docker network create <name>

建立一個使用者自訂的 bridge 網絡,用於服務發現與 DNS。

--driver bridge|overlay|macvlan;--subnet CIDR;--gateway;--ipv6;--internal

docker network create --driver bridge --subnet 10.20.0.0/24 mynet
docker network connect|disconnect <net> <c>

將執行中的容器接入/卸離某個網絡。

--ip IPV4;--ip6 IPV6;--alias 主機別名;--link 容器

docker network connect mynet web
docker network rm / docker network prune

刪除一個或多個網絡/清理未使用網絡。

-f 強制;--filter 'until=24h'

docker network prune -f

磁碟區與儲存

docker volume ls

列出磁碟區。

--filter dangling=true|driver|name;-q 只列 id;--format

docker volume ls --filter dangling=true -q
docker volume create <name>

建立一個具名磁碟區(由 Docker 管理,獨立於容器 UFS)。

--driver local;--opt type=nfs;--opt o=addr;--opt device=:/path

docker volume create --driver local --opt type=nfs --opt o=addr=10.0.0.1 --opt device=:/exports/data pgdata
docker volume rm / docker volume prune

刪除一個或多個磁碟區/清理未使用磁碟區。

-f 強制;--filter 'label=...'

docker volume rm $(docker volume ls -q --filter dangling=true)
docker volume inspect <vol>

顯示磁碟區的低階細節(掛載點、driver、選項)。

docker volume inspect pgdata --format '{{.Mountpoint}}'

Docker Compose

docker compose up

依 compose.yaml 建置(如需要)、建立並啟動服務。

-d 背景執行;--build 強制建置;--force-recreate;--pull always|missing|never;-f 檔案

docker compose -f compose.prod.yaml up -d --pull always
docker compose down

停止並移除容器、網絡;預設亦會移除匿名磁碟區。

--volumes 連具名磁碟區也一併刪除;--rmi all|local;--remove-orphans;-t N 逾時

docker compose down --rmi local --remove-orphans
docker compose ps / logs

列出 Compose 服務/檢視日誌。

ps -q 只列 id;logs -f 持續追蹤;--tail N;--since

docker compose ps --format json | jq '.[] | {Name, State}' && docker compose logs -f --tail 100 api
docker compose exec / run

在執行中/新建的服務容器內執行命令。

exec --user;exec -e VAR=val;run --rm 執行後刪除容器

docker compose exec db psql -U postgres app && docker compose run --rm api npm run migrate
docker compose build / pull / push

為 Compose 專案建置映像檔/從 Registry 拉取映像/推送映像。

--no-cache;--pull;--quiet;--parallel

docker compose build --no-cache api worker
docker compose restart / stop / start / scale

服務的生命週期快捷指令;scale 可調整副本數量。

restart <svc>;stop <svc>;start <svc>;scale api=4 worker=2

docker compose restart api && docker compose up -d --scale worker=4

Registry 與 Hub

docker login [server]

登入 Registry。Docker Hub 直接用 `docker login`。

-u 使用者;-p 密碼;--password-stdin

echo "$REGISTRY_TOKEN" | docker login ghcr.io -u myuser --password-stdin
docker logout [server]

從配置中移除某個 Registry 的登入憑證。

docker logout && docker info 2>/dev/null | head
docker search <term>

在 Docker Hub 搜尋映像檔。

--filter stars=N;--limit N;--format

docker search --filter stars=100 --limit 5 postgres

系統與清理

docker system df

顯示 Docker 的磁碟使用情況(映像、容器、磁碟區、建置快取)。

-v 詳細

docker system df -v | sort -k7 -h | tail
docker system prune

刪除所有停止的容器、孤立映像、未使用的網絡。

-a 全部映像;--volumes 連磁碟區也一併刪除;--filter 'until=24h';-f 強制

docker system prune -af --volumes --filter 'until=72h'
docker builder prune

清理建置快取(釋放舊圖層佔用的磁碟空間)。

-af;--filter 'until=72h';--keep-storage SIZE

docker builder prune -af --filter 'until=72h'
docker context ls / use

管理 Docker context——適用於多主機/多守護行程(包含透過 SSH 的遠端 context)。

ls --format json;use myctx

docker context create myhost --docker host=ssh://user@server && docker context use myhost && docker ps
docker info

顯示全系統資訊;除錯時很有用。

--format

docker info -f '{{.DriverStatus}}'
docker port <c>

列出容器的埠對映(主機 ↔ 容器)。

docker port web 80

速查頁版本 1.0.0

適用於 Docker Engine 24.0+