启动docker时,报错
启动 docker: systemctl start docker
报错: Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
按提示查看: 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 Wed 2024-07-10 00:07:41 PDT; 8s ago
Docs: https://docs.docker.com
Process: 6079 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=1/FAILURE)
Main PID: 6079 (code=exited, status=1/FAILURE)
Jul 10 00:07:39 localhost.localdomain systemd[1]: docker.service: main process exited, code=exited,...URE
Jul 10 00:07:39 localhost.localdomain systemd[1]: Failed to start Docker Application Container Engine.
Jul 10 00:07:39 localhost.localdomain systemd[1]: Unit docker.service entered failed state.
Jul 10 00:07:39 localhost.localdomain systemd[1]: docker.service failed.
Jul 10 00:07:41 localhost.localdomain systemd[1]: docker.service holdoff time over, scheduling restart.
Jul 10 00:07:41 localhost.localdomain systemd[1]: Stopped Docker Application Container Engine.
Jul 10 00:07:41 localhost.localdomain systemd[1]: start request repeated too quickly for docker.service
Jul 10 00:07:41 localhost.localdomain systemd[1]: Failed to start Docker Application Container Engine.
Jul 10 00:07:41 localhost.localdomain systemd[1]: Unit docker.service entered failed state.
Jul 10 00:07:41 localhost.localdomain systemd[1]: docker.service failed.
Hint: Some lines were ellipsized, use -l to show in full.
查看 journalctl -xe
情况也类似, 有用信息极少.
查看 Linux 操作日志
情况到这里似乎陷入了僵局,只能尝试查看 linux 的操作日志.
输入指令: tail -200f /var/log/messages
查看200行日志应该足够, 发现一直在重复如下报错:
Jul 9 23:48:56 localhost dockerd: unable to configure the Docker daemon with file /etc/docker/daemon.json: invalid character 's' looking for beginning of object key string
Jul 9 23:48:57 localhost systemd: docker.service: main process exited, code=exited, status=1/FAILURE
Jul 9 23:48:57 localhost systemd: Failed to start Docker Application Container Engine.
Jul 9 23:48:57 localhost systemd: Unit docker.service entered failed state.
Jul 9 23:48:57 localhost systemd: docker.service failed.
Jul 9 23:48:59 localhost systemd: docker.service holdoff time over, scheduling restart.
Jul 9 23:48:59 localhost systemd: Stopped Docker Application Container Engine.
Jul 9 23:48:59 localhost systemd: Starting Docker Application Container Engine...
在第一行找到报错信息: 通过 /etc/docker/daemon.json 这个文件,配置 Docker daemon 时,有个无效的以 "s" 开头的字符串.
问题被成功定位到.
修改 daemon.json 文件
进入这个文件所在文件夹: cd ../etc/docker
发现这个文件是存在的
打开并修改文件: vi daemon.json
看到文件内容为:
{
stry-mirrors": ["https://registry.docker-cn.com"]
}
原来是镜像源配置出了问题, json 对象的双引号都不全 stry-mirrors".
网上搜索一下 docker 的 daemon.json 文件基础配置,发现此处的格式应为 "registry-mirrors":["镜像源"] ,键盘输入 "i" 并将 "regi 补上, 按下 esc , 并 :wq 保存退出.
修改后:
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
启动
重新启动一下 docker: systemctl start docker
查看一下 docker 的状态: systemctl status docker.service
出现以下内容, 即为启动成功
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2024-07-09 23:59:33 PDT; 22s ago
Docs: https://docs.docker.com
Main PID: 5201 (dockerd)
Tasks: 8
Memory: 49.9M
CGroup: /system.slice/docker.service
└─5201 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock