Docker - 常用指令筆記 Image、Volume、Container 管理

Docker 指令大全

Posted by Young on 2025-10-03
Estimated Reading Time 3 Minutes
Words 746 In Total

docker ps

只顯示正在執行的容器

1
docker ps

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

1
2
3
docker ps -a  
# or
docker ps --all

顯示最近建立的容器

1
docker ps -l

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

1
docker ps -n <數字>

管理 Docker data 相關指令

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

列出目前有哪些 volume

1
2
3
4
5
6
7
8
9
10
11
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,這時候就可以執行

1
docker volume rm <VOLUME NAME>

一次刪除多個 volumes

1
docker volume rm volume1 volume2 volume3

搭配 Container 移除

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

1
docker rm -v <CONTAINER ID or NAME>

清除沒被任何 container 使用的 volume

1
docker volume prune

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

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

1
docker compose up

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

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

1
2
3
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

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

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

logs 查看該 container 輸出的 log

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 查看指定容器的全部日誌
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、跑了什麼進程、檔案系統長怎樣、環境變數、網路設定如何..等等。

1
2
3
4
5
# 進入容器的互動式終端
docker exec -it <container_name_or_id> /bin/bash

# 查看容器內運行的進程
docker exec -it <container_name_or_id> ps aux

若您覺得這篇文章對您有幫助,歡迎分享出去讓更多人看到⊂◉‿◉つ~


留言版