太长不看:重启大法好,sudo reboot
先说个题外话,dockerd
是用sudo
启动的话,docker-compose
也要用sudo
。
有一次排查问题,我多次重启docker
sudo systemctl restart docker
并且删除了/run/containerd/containerd.sock
和/var/run/containerd/containerd.sock
两个socket文件
1 | sudo ls -l /run/containerd/containerd.sock |
然后docker就起不来了 >.<
那就排查问题,先看看sudo systemctl status docker -l
和sudo journalctl -xe
1 | ● docker.service - Docker Application Container Engine |
看不出问题,那就用debug模式启动docker看看
sudo /usr/bin/dockerd --containerd=/run/containerd/containerd.sock
1 | INFO[2019-10-10T14:35:29.260193095+08:00] Starting up |
找到问题了,是连接不到/run/containerd/containerd.sock
,那被我删了嘛,docker自己不会新建嘛?那我帮它创建好了。
创建socket文件的方式有mksock
、nc
或者用python
sudo mksocket /run/containerd/containerd.sock
sudo nc -lU /run/containerd/containerd.sock
python -c "import socket as s; sock = s.socket(s.AF_UNIX); sock.bind('/run/containerd/containerd.sock')"
继续debug模式启动docker,可是得到了上述同样的报错
最后我把docker卸载了重装也不行,无奈之下只好….
重启大法
sudo reboot
重启docker服务,搞定。