# docker ps

只顯示正在執行的容器

docker ps

顯示所有容器(包含執行中、已停止、已退出)

docker ps -a  
# or
docker ps --all

顯示最近建立的容器

docker ps -l

顯示最近建立的 N 個容器(例:docker ps -n 3

docker ps -n <>

# 管理 Docker data 相關指令

查看目前有哪些 volume,很常會有需要清理一些沒在使用的、或只是暫時創建來測試用的一些 data,這些 data = docker 的 volume

# 列出目前有哪些 volume

docker volume ls

DRIVER    VOLUME NAME
local     a88a3848877ac88f427aa5cefe20fc3b154f9fc6c8f8a91233ec33ec83ea497f
local     f91f8d6e293f00bd830e5773f6ecbb14c0e2a8898dfbe39a7db06df2dff20f58
local     xxx_my_logs
local     xxx_postgres_data
local     xxx_redis_data
local     yyy_backend_media
local     yyy_backend_static
local     yyy_postgres_data

# 刪除指定 volume

比如說 xxx_postgres_data 這個 postgres 的 data 是舊的,有新的 db schema 要重新建一個新的 volume,這時候就可以執行

docker volume rm <VOLUME NAME>

一次刪除多個 volumes

docker volume rm volume1 volume2 volume3

# 搭配 Container 移除

如果 container 移除時想一併刪除匿名的 volumes:

docker rm -v <CONTAINER ID or NAME>

# 清除沒被任何 container 使用的 volume

docker volume prune

# 根據 docker image build 開發 vs 正式環境

預設會檢查 image 是否存在,如果不存在就會自動 build(等於 up --build)。如果 image 已存在,不會重新 build,直接用現成的 image 起 container

docker compose up

明確要求重新 build image,根據 Dockerfile 與 context,不會啟動容器,只是建好新的 image。常搭配 docker compose up -d 一起用:

比如剛剛修改了 Dockerfile / 套件依賴,要確保 image 更新

docker compose build # 只做 build,不會啟動容器
docker compose build --no-cache # 確保不使用快取
docker compose up -d --build # build 完後啟動容器並在背景執行

# docker compose up --build VS docker compose build 差異

指令 是否會建新 image 是否啟動 container 適合環境
docker compose up 如果 image 不存在才建 開發快速啟動
docker compose up -d 如果 image 不存在才建 開發快速啟動(背景執行)
docker compose up --build 強制重建 開發測試,確保 image 更新
docker compose build ✅ 強制重建 Production 準備、CI/CD pipeline

# 清除 images

# 清除「未被任何容器使用」的鏡像 (dangling images)
docker system prune

# -a = all,不只 dangling,會清掉所有目前沒被用到的 image
docker system prune -a

# logs 查看該 container 輸出的 log

# 查看指定容器的全部日誌
docker logs <container_name_or_id>

# 查看容器即時日誌(持續輸出)
docker logs -f <container_name_or_id>

# 查看最新的 100 行日誌
docker logs --tail 100 <container_name_or_id>

# 查看日誌並附帶時間戳
docker logs -t <container_name_or_id>

# 實時查看,並只輸出最新 50 行
docker logs -f --tail 50 <container_name_or_id>

# exec 進入 docker container 內

這指令還蠻常用的,要完全搞清楚 docker 的運作原理跟模式,就很常會親自進入 container 裡面查看實際情況,看 container 內的 logs、跑了什麼進程、檔案系統長怎樣、環境變數、網路設定如何..等等。

參數說明:

  • -i:互動式(interactive),保持標準輸入(stdin)開啟
  • -t:分配一個虛擬終端(tty),讓你可以像在終端機一樣操作
# 進入容器的互動式終端
docker exec -it <container_name_or_id> bash

請我喝[茶]~( ̄▽ ̄)~*

Young 微信支付

微信支付

Young 支付寶

支付寶