Docker 指令其實有很多,只先需要熟悉常用到的就好,像是「看容器、啟停、看 log、進容器、重建、清理」這幾類我覺得最重要。
(p.s 目前本身對 Docker 指令我也還是小常用的就那幾個~所以本篇有搭配著 AI 一起學習~)
可以先把 Docker 操作理解成這個流程:
查看狀態
→ 啟動服務
→ 發現問題
→ 看 log
→ 進 container 檢查
→ 必要時重建
→ 停止 / 清理
1.docker ps
最常用的是 docker ps 查看「目前正在執行中的 container」。
啟動了服務常常有個時候會跑起來不太順利,這個時候就可以使用 docker ps,如果 container 有出現在裡面,代表目前正在執行。
通常會看到類似這樣:
CONTAINER ID IMAGE PORTS NAMES
abc123 frontend 0.0.0.0:10080->80/tcp frontend
def456 backend 0.0.0.0:5000->5000/tcp backend
ghi789 postgres:16 0.0.0.0:5432->5432/tcp postgres
如果想看「包含已停止的 container」可以下 docker ps -a ,這個在除錯時非常有用,因為有時候服務其實啟動失敗,一啟動就 exit,所以 docker ps 看不到,
但 docker ps -a 會看得到像是:
backend Exited (1) 10 seconds ago
2.查看 container 的 log
在工作的時候常常服務有啟動,但執行起來不如預期,因此也很常需要看 LOG 看下是哪個地方出錯或有問題
以前很菜常常 Docker 環境 debug 就搞了半天,總之就是需要有點耐心去找出原因...
看某個 service log 可以下 docker logs aaa-service
如果 log 很長,可以只看最後 100 行,實戰比較常用:docker logs --tail 100 users-service
或者持續監看 docker logs -f users-service
3.停止和重啟 container
如果你要停止一個 container:docker stop backend
重新啟動:docker start backend
直接重啟:docker restart backend
restart 很常用只是想重新啟動某個 service,像是 :docker restart users-service
4.docker compose up 啟動整個專案
專案是使用 docker-compose.yml 或 compose.yaml,很常用 docker compose,而不是一個一個操作 container,像是: docker compose up 可以啟動者個專案
例如 compose 裡有:
frontend
backend
postgres
redis
但我蠻常使用 docker compose up -d 差別在於在背景執行,就不會一直被 log 卡住,不會顯示 log 訊息
5.docker compose down 把環境拆掉,把目前這個 Docker Compose 專案停掉,並把 Compose 建立的 container 和 network 移除
docker compose down 跟 docker compose stop 有一些差別
docker compose stop
→ 只是停止 container
→ container 還存在
docker compose down
→ 停止 container
→ container 也刪掉
→ network 也刪掉
所以 docker compose stop 只是把 container 停掉,Container 還存在,之後可以 docker compose start 重新啟。
但 docker compose down 會把 compose 建立的 container 與 network 移除。