Ubuntu安装Docker后启动失败:docker.service加载异常及socket问题求助
我在Ubuntu 16.04的GCP实例上成功安装了Docker,但启动服务时遇到了问题。执行sudo service docker start时抛出以下错误:
Job for docker.socket failed. See "systemctl status docker.socket" and "journalctl -xe" for details. Failed to start docker.service: Unit docker.service is not loaded properly: Invalid argument. See system logs and 'systemctl status docker.service' for details.
我的系统和Docker版本信息:
- 系统内核:
Linux instance-1 4.15.0-1029-gcp #31~16.04.1-Ubuntu SMP Fri Mar 22 13:06:42 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux - Docker版本:
18.09.2, build 6247962
执行sudo docker info时得到:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
查看docker.socket状态:
● docker.socket - Docker Socket for the API Loaded: loaded (/lib/systemd/system/docker.socket; enabled; vendor preset: enabled) Active: failed (Result: service-start-limit-hit) since Thu 2019-05-09 03:53:13 PDT; 5h 0min ago Listen: /var/run/docker.sock (Stream)
另外我发现/var/run/docker.sock这个文件根本不存在,有没有大佬能帮忙解决这个问题?
解决步骤
1. 重置Docker相关的systemd配置
先停止所有Docker相关服务,避免冲突:
sudo systemctl stop docker.service docker.socket
然后重新加载systemd配置,让系统识别可能的配置变更:
sudo systemctl daemon-reload
2. 检查并修复docker.socket的配置文件
打开docker.socket的系统配置文件,确认内容是否正确:
sudo nano /lib/systemd/system/docker.socket
正确的配置应该类似这样,如果有路径错误、权限设置异常,修改后保存:
[Unit] Description=Docker Socket for the API [Socket] ListenStream=/var/run/docker.sock SocketMode=0660 SocketUser=root SocketGroup=docker [Install] WantedBy=sockets.target
修改完成后再次重新加载systemd:
sudo systemctl daemon-reload
3. 手动创建缺失的docker.sock并设置权限
既然文件不存在,我们手动创建并配置正确的权限(这部分是Docker daemon启动时自动生成的,但异常情况下需要手动干预):
sudo touch /var/run/docker.sock sudo chown root:docker /var/run/docker.sock sudo chmod 0660 /var/run/docker.sock
4. 分步启动Docker服务
先启动docker.socket,再启动docker.service,避免依赖问题:
sudo systemctl start docker.socket sudo systemctl start docker.service
检查两个服务的状态,确认是否正常运行:
systemctl status docker.socket docker.service
5. 终极方案:完全卸载后重新安装Docker
如果以上步骤都无效,可能是安装过程中出现了损坏,建议完全清理后重新安装:
# 卸载现有Docker组件 sudo apt-get purge docker-ce docker-ce-cli containerd.io sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd # 重新安装指定版本的Docker(匹配你的18.09.2版本) sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt-get update sudo apt-get install docker-ce=18.09.2~ce~3-0~ubuntu-xenial docker-ce-cli=18.09.2~ce~3-0~ubuntu-xenial containerd.io
安装完成后启动服务并设置开机自启:
sudo systemctl start docker sudo systemctl enable docker
内容的提问来源于stack exchange,提问作者ArrchanaMohan




