Just Do IT !

解决docker中修改docker.daemon文件后启动失败

字数统计: 476阅读时长: 2 min
2020/05/17 Share

在 docker 配置文件中设置

docker 1.12 版本之后, 建议在 docker 的 js 配置文件中配置, 路径为 /etc/docker/daemon.json 默认没有这个文件, 可以手动创建此文件, docker 启动时默认会读取此配置文件

1
2
3
{
"registry-mirrors": ["https://6y2639ye.mirror.aliyuncs.com"]
}

我这里配置的加速源

在一次误操作中 动了/usr/lib/systemd/system/docker.service下的文件 报错:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@localhost ~]# systemctl status docker.service
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: failed (Result: start-limit) since 四 2020-05-14 10:19:16 CST; 25s ago
Docs: https://docs.docker.com
Process: 2493 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=1/FAILURE)
Main PID: 2493 (code=exited, status=1/FAILURE)

5月 14 10:19:14 localhost.localdomain systemd[1]: Failed to start Docker Application Container Engine.
5月 14 10:19:14 localhost.localdomain systemd[1]: Unit docker.service entered failed state.
5月 14 10:19:14 localhost.localdomain systemd[1]: docker.service failed.
5月 14 10:19:16 localhost.localdomain systemd[1]: docker.service holdoff time over, scheduling restart.
5月 14 10:19:16 localhost.localdomain systemd[1]: Stopped Docker Application Container Engine.
5月 14 10:19:16 localhost.localdomain systemd[1]: start request repeated too quickly for docker.service
5月 14 10:19:16 localhost.localdomain systemd[1]: Failed to start Docker Application Container Engine.
5月 14 10:19:16 localhost.localdomain systemd[1]: Unit docker.service entered failed state.
5月 14 10:19:16 localhost.localdomain systemd[1]: docker.service failed.

解决

是因为 docker 的 socket 配置出现了冲突, 接下来查看 docker 的启动入口文件

1
2
3
4
5
> vim /lib/systemd/system/docker.service # Ubuntu的路径; CentOS 的路径为: /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd -H fd://
修改为
ExecStart=/usr/bin/dockerd

从上面可以看出, 在 docker 的启动入口文件中配置了 host 相关的信息, 而在 docker 的配置文件中也配置了 host 的信息, 所以发生了冲突. 解决办法, 建议将 docker 启动入口文件中的 -H fd:// 删除, 再重启 docker 服务即可

1
2
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl start docker

CATALOG
  1. 1. 在 docker 配置文件中设置
  2. 2. 解决