CentOS7下docker服務無法啟動的一般檢查
檢查步驟
啟動docker服務:
systemctl restart docker
這個時候會報錯,請進行以下步驟:
1. 找到報錯的型別,或者報錯的說明。
2. 檢查docker的配置檔案
3. 檢查磁碟空間
4. 檢查端口占用情況
步驟詳解
檢查報錯型別,檢視日誌:
journalctl -xe
檢查配置檔案,不同作業系統位置基本相同:
/etc/sysconfig/docker/
或者直接找到docker執行程式,一般會有相關配置檔案的預設路徑
檢查磁碟空間:
df -h
檢查端口占用:
netstat -anp
例項
報錯資訊如下:
-- Unit docker.service has begun starting up.
Dec 04 21:17:46 localhost.localdomain docker[7175]: time="2016-12-04T21:17:46.093155159+08:00" level=warning msg="/!\\ DON'T BIND ON ANY IP ADDRESS WITHOUT setting -tlsverify IF YOU DON'T KNOW WHAT YOU'RE DOING /!\\"
Dec 04 21:17:46 localhost.localdomain docker[7175]: time="2016-12-04T21:17:46.093322868+08:00" level=fatal msg="listen tcp 172.17.0.1:2376: bind: cannot assign requested address"
Dec 04 21:17:46 localhost.localdomain systemd[1]: docker.service: main process exited, code=exited, status=1/FAILURE
Dec 04 21:17:46 localhost.localdomain systemd[1]: Failed to start Docker Application Container Engine.
-- Subject: Unit docker.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit docker.service has failed.
解決方案:
上一篇文章已經說過了簡單暴力的解決方案,就是清理/var/lib/docker這個目錄,重置設定。
然而,並不清楚具體原因。今天伺服器有斷電了,服務還是報錯。說明了一點,簡單暴力的手段並不是好的解決方案,治標不治本。這裡重新分析了先問題:
可以看到fatal msg”listen tcp 172.17.0.1:2376: bind: cannot assign requested address“,說的是綁定了一個埠,但是這個地址和埠又不能分配。
上一行大意“你要是不懂,就別瞎繫結埠”,囧。。
找了很久沒有在/var/lib/docker的目錄下找到關於2376埠bind的配置,思量半天,突然感覺是程式啟動的配置檔案,最後在/etc/sysconfig/docker目錄下找到了。額,這個是之前為了實現一個跟jenkins相關的功能繫結的,並不是瞎邦的。暫時註釋掉bind設定的這行,重啟服務。ok~
————————————-芥系分割線——————————————————-
2016/12/24 平安夜
之前遇到的這個問題又重新考慮了一遍,翻了翻docker remote api的官方文件,半年之間已經迭代了很多版本。
上文問題的提示再單獨拎出來,如下:
04T21:17:46.093155159+08:00" level=warning msg="/!\\ DON'T BIND ON ANY IP ADDRESS WITHOUT setting -tlsverify IF YOU DON'T KNOW WHAT YOU'RE DOING /!\\"
翻譯:
04T21:17:46.093155159+08:00" level=warning msg="/!\\ 你要知道繫結IP地址前請先設定-tlsverify /!\\"
具體什麼是tlsverify呢?字面意思就是TLS(Transport Layer Security)認證。通過證書授使只受信任的docker客戶端連線到伺服器。類似git裡的ssl授權客戶端一樣。
不設定tlsverify的話,預設的docker damen的無法開機啟動的。對於運維來說就是一場噩夢。