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:alpinedocker start|stop|restart <container>啟動、停止或重啟既有容器(依名稱或 id)。
-t N 殺掉前等待秒數(預設 10)
docker restart web && docker logs --tail 50 webdocker 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-webdocker update <c>在執行時更新容器的資源限制或重啟策略。
--cpus N;--memory SIZE;--memory-swap SIZE;--restart 策略
docker update --cpus 1.5 --memory 1g apidocker 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 ERRORdocker exec -it <c> <cmd>在執行中的容器內執行命令(常用於開啟互動 shell)。
-i 保持 STDIN 開啟;-t 配置偽 TTY;-u 指定使用者;-w 工作目錄;-e KEY=VAL
docker exec -it -u postgres db psql -U postgres app_productiondocker 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}}' webdocker 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-alpinedocker images列出本地守護行程中的映像檔。
-a 全部(含中介層);-q 只列 id;--digests;--filter dangling=true
docker images --format '{{.Repository}}:{{.Tag}}\t{{.Size}}' | sort -k2 -h | tail -20docker 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.0docker push <image>將映像檔(或倉庫)上傳到 Registry。
--disable-content-trust;-a 所有標籤變體;--quiet
docker push registry.example.com/team/myapp:1.2.0docker 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:alpinedocker 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 mynetdocker network connect|disconnect <net> <c>將執行中的容器接入/卸離某個網絡。
--ip IPV4;--ip6 IPV6;--alias 主機別名;--link 容器
docker network connect mynet webdocker 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 -qdocker 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 pgdatadocker 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 alwaysdocker compose down停止並移除容器、網絡;預設亦會移除匿名磁碟區。
--volumes 連具名磁碟區也一併刪除;--rmi all|local;--remove-orphans;-t N 逾時
docker compose down --rmi local --remove-orphansdocker 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 apidocker 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 migratedocker compose build / pull / push為 Compose 專案建置映像檔/從 Registry 拉取映像/推送映像。
--no-cache;--pull;--quiet;--parallel
docker compose build --no-cache api workerdocker 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=4Registry 與 Hub
docker login [server]登入 Registry。Docker Hub 直接用 `docker login`。
-u 使用者;-p 密碼;--password-stdin
echo "$REGISTRY_TOKEN" | docker login ghcr.io -u myuser --password-stdindocker logout [server]從配置中移除某個 Registry 的登入憑證。
docker logout && docker info 2>/dev/null | headdocker 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 | taildocker 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 psdocker info顯示全系統資訊;除錯時很有用。
--format
docker info -f '{{.DriverStatus}}'docker port <c>列出容器的埠對映(主機 ↔ 容器)。
docker port web 80速查頁版本 1.0.0
適用於 Docker Engine 24.0+