目錄
- 背景
- 啟動(dòng)失敗
- 查看具體報(bào)錯(cuò) & 解決
- 總結(jié)
背景
Docker啟動(dòng)失敗的原因和使用了阿里云的源有關(guān)。
如果大家有使用到阿里云的源倉庫,可以繼續(xù)看下是否也可以解決問題。
啟動(dòng)失敗
在Linux服務(wù)器上安裝docker,執(zhí)行docker 和docker version沒有問題。
但是執(zhí)行docker images等命令報(bào)錯(cuò),按照提示首先
執(zhí)行:systemctl status docker

可以看到,報(bào)錯(cuò)信息為“無法啟動(dòng)Docker應(yīng)用的容器引擎”,這里其實(shí)只能看到啟動(dòng)失敗,狀態(tài)為failed,沒有更多提示信息。
查看具體報(bào)錯(cuò) & 解決
執(zhí)行命令:dockerd

這時(shí),我們發(fā)現(xiàn)已經(jīng)找到了正確的debug方式了:這里報(bào)錯(cuò)的具體信息為“啟動(dòng)守護(hù)進(jìn)程時(shí),初始化graphdriver失敗:overlay2.override_kernel_check選項(xiàng)未知”。
這時(shí)我們需要去daemon的json配置文件:/etc/docker/daemon.json,將stroage-driver替換一下。
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
## 替換成下面
"storage-driver": "overlay"
}
然后嘗試啟動(dòng)docker:systemctl start docker ,同樣用dockerd命令看到有以下錯(cuò)誤:

這里意思是:
“守護(hù)進(jìn)程初始化網(wǎng)絡(luò)控制器報(bào)錯(cuò):地址列表沒有可用的IP”。
這是為什么呢?這是因?yàn)镈ocker會(huì)檢查bridge list里的IP,如果發(fā)現(xiàn)有和服務(wù)器或者路由表IP有重疊,就會(huì)丟棄該IP,導(dǎo)致報(bào)錯(cuò)。
這時(shí),我們查看阿里云服務(wù)器路由表:route -n

可以看到,172網(wǎng)段其實(shí)是和Docker的list bridge里有重疊。
所以我們可以手動(dòng)增加網(wǎng)卡,如圖中所示:
sudo ip link add name docker0 type bridge sudo ip addr add dev docker0 172.17.0.1/16
再重啟docker應(yīng)該就可以了:systemctl start docker
設(shè)置docker開機(jī)自啟動(dòng):systemctl enable docker
總結(jié)
我這邊遇到的問題和解決方法就是上面這樣。
也可以參考這篇文章:https://www.jb51.net/article/280108.htm
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持。






