docker容器服務(wù)部署失敗后怎么找原因?應(yīng)用、服務(wù)的事件列表記錄了對應(yīng)用和服務(wù)操作的關(guān)鍵操作日志信息,可以快速定位應(yīng)用、服務(wù)部署失敗的原因。
1、比如應(yīng)用部署之后,報告“Unable to find a node that satisfies the following conditions [port xxxx (Bridge mode)]”
當(dāng)容器使用端口映射(docker run -p xxxx:xxxx或者 compose模板中的ports聲明 )之后,統(tǒng)會在宿主機上創(chuàng)建一個port,通過NAT來訪問容器的指定port。如果宿主機上的端口被容器或者系統(tǒng)進程占用,就會導(dǎo)致端口分配失敗。
因為集群管理會檢查所有的容器來防止端口配置沖突,即使沒有在運行狀態(tài)的容器,如果已經(jīng)聲明過端口映射。相應(yīng)的宿主機端口也會標(biāo)記為已占用。
解決方法是,清除占用端口的容器或者進程,或者調(diào)整容器端口映射的宿主機端口避免沖突
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
