docker容器服務(wù)部署失敗后怎么找原因?應(yīng)用、服務(wù)的事件列表記錄了對(duì)應(yīng)用和服務(wù)操作的關(guān)鍵操作日志信息,可以快速定位應(yīng)用、服務(wù)部署失敗的原因。
1、比如應(yīng)用部署之后,報(bào)告“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)會(huì)在宿主機(jī)上創(chuàng)建一個(gè)port,通過(guò)NAT來(lái)訪問(wèn)容器的指定port。如果宿主機(jī)上的端口被容器或者系統(tǒng)進(jìn)程占用,就會(huì)導(dǎo)致端口分配失敗。
因?yàn)榧汗芾頃?huì)檢查所有的容器來(lái)防止端口配置沖突,即使沒(méi)有在運(yùn)行狀態(tài)的容器,如果已經(jīng)聲明過(guò)端口映射。相應(yīng)的宿主機(jī)端口也會(huì)標(biāo)記為已占用。
解決方法是,清除占用端口的容器或者進(jìn)程,或者調(diào)整容器端口映射的宿主機(jī)端口避免沖突
2、 查詢Docker Engine日志
有時(shí)候因?yàn)橄到y(tǒng)原因,Docker Engine無(wú)法正常創(chuàng)建、刪除、啟動(dòng)、停止容器,我們需要查詢Docker Engine日志來(lái)排查信息。
首先,需要定位到出現(xiàn)問(wèn)題的節(jié)點(diǎn),SSH登錄到指定節(jié)點(diǎn)之后,執(zhí)行下列命令來(lái)查看Docker Engine日志
Ubuntu 14.04:less /var/log/upstart/docker.log
CentOS 7.x:journalctl -r -u docker