Docker 常用指令

更新 2026.09.21

Docker、Docker Compose、Container、Image、Volume、Network 與 Laradock 常用指令整理。

Container

指令 用途 備註
docker ps 顯示正在執行的 Container
docker ps -a 顯示所有 Container 包含已停止的 Container
docker start CONTAINER 啟動 Container 可使用 Container Name 或 ID
docker stop CONTAINER 停止 Container
docker restart CONTAINER 重新啟動 Container
docker kill CONTAINER 強制停止 Container
docker rm CONTAINER 刪除已停止的 Container
docker rm -f CONTAINER 強制刪除 Container 包含正在執行的 Container
docker pause CONTAINER 暫停 Container
docker unpause CONTAINER 恢復 Container

Container 批次操作

停止所有正在執行的 Container:

docker stop $(docker ps -q)

啟動所有 Container:

docker start $(docker ps -a -q)

停止所有 Container:

docker stop $(docker ps -a -q)

刪除所有已停止的 Container:

docker container prune

強制刪除所有 Container:

docker rm -f $(docker ps -a -q)

原本的 docker stop $(docker ps -a -q) 是停止全部 Container,不是啟動。

原本的 docker start $(docker ps -a -q) 才是啟動全部 Container。

進入 Container

指令 用途
docker exec -it CONTAINER bash 使用 Bash 進入 Container
docker exec -it CONTAINER sh 使用 Shell 進入 Container
docker attach CONTAINER Attach 到 Container 主程序

例如:

docker exec -it nginx bash

如果 Container 沒有 Bash:

docker exec -it nginx sh

執行單一指令:

docker exec CONTAINER ls -la

例如:

docker exec mysql mysql --version

Container Log

指令 用途
docker logs CONTAINER 查看 Container Log
docker logs -f CONTAINER 即時查看 Log
docker logs --tail 100 CONTAINER 查看最後 100 行
docker logs --since 1h CONTAINER 查看最近一小時 Log

例如:

docker logs -f nginx

Container 狀態

指令 用途
docker stats 即時查看 Container CPU / Memory
docker stats CONTAINER 查看指定 Container 資源
docker inspect CONTAINER 查看 Container 詳細資訊
docker top CONTAINER 查看 Container Process
docker port CONTAINER 查看 Port Mapping

Docker Image

指令 用途
docker images 顯示所有 Image
docker image ls 顯示所有 Image
docker pull IMAGE 下載 Image
docker build -t NAME . 建立 Image
docker build --no-cache -t NAME . 不使用 Cache 建立 Image
docker rmi IMAGE 刪除 Image
docker image prune 清除未使用的 Image
docker image prune -a 清除所有未被 Container 使用的 Image

例如:

docker pull nginx

建立 Image:

docker build -t my-app .

指定 Dockerfile:

docker build -f Dockerfile.production -t my-app .

Docker Run

基本執行:

docker run IMAGE

背景執行:

docker run -d IMAGE

指定 Container Name:

docker run -d --name my-nginx nginx

Port Mapping:

docker run -d -p 8080:80 nginx

Volume:

docker run -d -v ./data:/app/data IMAGE

Environment Variable:

docker run -d -e APP_ENV=production IMAGE

Container 停止後自動刪除:

docker run --rm IMAGE

互動模式:

docker run -it IMAGE bash

Docker Compose

目前建議使用:

docker compose

舊版則是:

docker-compose

Docker Compose 啟動

啟動:

docker compose up

背景執行:

docker compose up -d

重新 Build 並啟動:

docker compose up -d --build

指定 Compose File:

docker compose -f docker-compose.yml up -d

使用多個 Compose File:

docker compose \
  -f docker-compose.yml \
  -f docker-compose.production.yml \
  up -d

Docker Compose 停止

停止服務但保留 Container:

docker compose stop

重新啟動:

docker compose restart

停止並移除 Container / Network:

docker compose down

同時移除 Orphan Container:

docker compose down --remove-orphans

同時移除 Volume:

docker compose down -v

docker compose down --remove-orphans 的主要用途是清除目前 Compose 設定中已不存在的舊服務 Container,不是「清除 file」。

Docker Compose Build

重新 Build:

docker compose build

不使用 Cache:

docker compose build --no-cache

Build 指定 Service:

docker compose build --no-cache redis-cluster

Build 多個 Service:

docker compose build --no-cache \
  nginx \
  mysql \
  phpmyadmin \
  redis \
  redis-cluster \
  php-worker \
  workspace \
  laravel-echo-server

Build 後啟動:

docker compose up -d --build

Docker Compose Service

查看服務:

docker compose ps

查看 Log:

docker compose logs

即時查看:

docker compose logs -f

指定 Service:

docker compose logs -f nginx

啟動指定 Service:

docker compose up -d nginx

重新啟動指定 Service:

docker compose restart nginx

停止指定 Service:

docker compose stop nginx

Docker Compose Exec

進入 Service:

docker compose exec SERVICE bash

例如:

docker compose exec workspace bash

如果沒有 Bash:

docker compose exec SERVICE sh

直接執行指令:

docker compose exec workspace php artisan migrate

Volume

指令 用途
docker volume ls 查看 Volume
docker volume inspect VOLUME 查看 Volume 詳細資料
docker volume rm VOLUME 刪除 Volume
docker volume prune 清除未使用 Volume

查看:

docker volume ls

清除未使用 Volume:

docker volume prune

Volume 可能包含 Database 資料,刪除前要先確認。

Network

指令 用途
docker network ls 查看 Network
docker network inspect NETWORK 查看 Network
docker network create NETWORK 建立 Network
docker network rm NETWORK 刪除 Network
docker network prune 清除未使用 Network

例如:

docker network ls

Docker 清理

查看 Docker 使用空間:

docker system df

清除停止的 Container、未使用 Network、Build Cache:

docker system prune

清除包含未使用 Image:

docker system prune -a

清除包含 Volume:

docker system prune -a --volumes

docker system prune -a --volumes 會刪除大量 Docker 資源,尤其需要注意資料庫 Volume。

Docker Build Cache

查看 Build Cache:

docker builder prune

清除全部未使用 Build Cache:

docker builder prune -a

File / Permission

查看權限:

ls -la

Laravel Storage 常見權限:

chown -R 1000:1000 storage

或:

chown -R 1000:1000 storage bootstrap/cache

修改權限:

chmod -R 775 storage bootstrap/cache

開發環境臨時處理:

chmod -R 777 storage

chmod -R 777 權限過大,不建議正式環境使用。

Laradock

進入 Laradock Workspace:

docker compose exec workspace bash

舊版:

docker-compose exec workspace bash

啟動基本服務:

docker compose up -d nginx mysql phpmyadmin

啟動 Laravel + Redis:

docker compose up -d \
  nginx \
  mysql \
  phpmyadmin \
  redis \
  redis-webui \
  php-worker \
  workspace \
  laravel-echo-server

重新 Build Laradock 常用服務:

docker compose build --no-cache \
  nginx \
  mysql \
  phpmyadmin \
  redis \
  redis-cluster \
  php-worker \
  workspace \
  laravel-echo-server

啟動 Laravel Echo Server:

docker compose up -d laravel-echo-server

查看 Laradock:

docker compose ps

Laradock + Laravel

進入 Workspace:

docker compose exec workspace bash

Migration:

php artisan migrate

Seeder:

php artisan db:seed

清除 Laravel Cache:

php artisan optimize:clear

Composer:

composer install

Node:

npm install
npm run dev

也可以不進 Workspace,直接從 Host 執行:

docker compose exec workspace php artisan migrate
docker compose exec workspace php artisan optimize:clear
docker compose exec workspace composer install

MySQL

進入 MySQL Container:

docker compose exec mysql bash

登入 MySQL:

docker compose exec mysql mysql -u root -p

查看 Log:

docker compose logs -f mysql

Redis

Redis CLI:

docker compose exec redis redis-cli

測試 Redis:

docker compose exec redis redis-cli ping

正常應回:

PONG

查看 Redis Log:

docker compose logs -f redis

Nginx

重新啟動:

docker compose restart nginx

查看 Log:

docker compose logs -f nginx

測試 Nginx Config:

docker compose exec nginx nginx -t

Reload:

docker compose exec nginx nginx -s reload

Docker Debug

Container 不斷 Restart:

docker ps -a
docker logs CONTAINER

Compose Service 啟動失敗:

docker compose ps
docker compose logs SERVICE

查看完整 Container 設定:

docker inspect CONTAINER

查看 Network:

docker network ls
docker network inspect NETWORK

查看 Volume:

docker volume ls
docker volume inspect VOLUME

查看 Docker 空間:

docker system df

常用開發流程

啟動專案:

docker compose up -d

重新 Build:

docker compose up -d --build

查看狀態:

docker compose ps

查看 Log:

docker compose logs -f

進入 Application Container:

docker compose exec workspace bash

停止專案:

docker compose down

Docker 專案完全重建

一般重新 Build:

docker compose down
docker compose up -d --build

不使用 Cache:

docker compose down
docker compose build --no-cache
docker compose up -d

如果需要清除 Orphan:

docker compose down --remove-orphans
docker compose up -d --build

如果連 Volume 都要刪除:

docker compose down -v
docker compose up -d --build

down -v 可能刪除 MySQL、PostgreSQL 等 Database Volume,使用前需確認。

常用快速檢查

Docker:

docker version
docker info

Container:

docker ps -a

Image:

docker images

Compose:

docker compose ps

Log:

docker compose logs -f

資源:

docker stats

硬碟:

docker system df

舊版 Docker Compose

舊環境可能仍使用:

docker-compose up -d
docker-compose down
docker-compose build
docker-compose ps
docker-compose logs
docker-compose exec workspace bash

對應新版:

docker compose up -d
docker compose down
docker compose build
docker compose ps
docker compose logs
docker compose exec workspace bash

新文件建議統一使用:

docker compose