docker容器服務部署失敗后怎么找原因?應用、服務的事件列表記錄了對應用和服務操作的關鍵操作日志信息,可以快速定位應用、服務部署失敗的原因。
1、比如應用部署之后,報告“Unable to find a node that satisfies the following conditions [port xxxx (Bridge mode)]”
當容器使用端口映射(docker run -p xxxx:xxxx或者 compose模板中的ports聲明 )之后,統(tǒng)會在宿主機上創(chuàng)建一個port,通過NAT來訪問容器的指定port。如果宿主機上的端口被容器或者系統(tǒng)進程占用,就會導致端口分配失敗。
因為集群管理會檢查所有的容器來防止端口配置沖突,即使沒有在運行狀態(tài)的容器,如果已經(jīng)聲明過端口映射。相應的宿主機端口也會標記為已占用。
解決方法是,清除占用端口的容器或者進程,或者調整容器端口映射的宿主機端口避免沖突
2、 查詢Docker Engine日志
有時候因為系統(tǒng)原因,Docker Engine無法正常創(chuàng)建、刪除、啟動、停止容器,我們需要查詢Docker Engine日志來排查信息。
首先,需要定位到出現(xiàn)問題的節(jié)點,SSH登錄到指定節(jié)點之后,執(zhí)行下列命令來查看Docker Engine日志
Ubuntu 14.04:less /var/log/upstart/docker.log
CentOS 7.x:journalctl -r -u docker