Docker 有提供 events 的指令用來監聽 Docker 的服務事件,例如在執行 docker run 的時候,就會經過 create -> attach -> start 的狀態。 這個可以用在很多地方,例如容器一直執行不起來的時候,就可以使用 docker events 來觀察到底是失敗在哪一個階段。

使用 docker events 指令

首先先開啟一個命令提示字元視窗,輸入以下指令,然後就把這個視窗放著。

bash
  • bash
1
docker events --format "{{json .}}" | jq

指令中使用了 jq 的工具,能夠讓 json 看起來更易讀

輸入成功後,該視窗會開始監聽 docker 的事件,如下圖。

docker-eventsdocker-events

接著開啟一個新的命令提示字元視窗,輸入以下指令

bash
  • bash
1
docker run alpine

就會看到 docker events 把各種事件的訊息列印出來,從 create -> attach 到加入 bridge 網路,最後容器 start 都會列印出來,從這些訊息就可以很清楚知道,docker 在執行容器起來的時候做了哪些事情。

docker-run-alpinedocker-run-alpine

小結

docker 不同類型的指令會接收到不同事件,例如執行 container 相關的指令的話會有 attach, create, destory 等等事件,執行 images 相關指令會有 delete, import, load 相關事件,詳細的事件說明可以參考 docker events

延伸閱讀

[tool - jq]
[docker events]
[Add an event-state diagram for containers]