【发布时间】:2021-08-02 19:42:19
【问题描述】:
我正在尝试推送一个 docker 映像,并注意到我的 docker 守护程序实际上可能没有运行。
例如,如果我运行:
docker run hello-world
docker:无法连接到 Docker 守护进程 unix:///var/run/docker.sock。 docker 守护进程是否正在运行?
如果我尝试使用以下方法重新启动守护程序:
systemctl start docker
docker.service 的作业失败,因为控制进程退出 错误代码。请参阅“systemctl status docker.service”和“journalctl -xe” 了解详情。
继续运行:
systemctl status docker.service
docker.service - Docker 应用容器引擎
已加载:已加载(/lib/systemd/system/docker.service;已启用;供应商 预设:启用) 活动:自 2021 年 5 月 12 日星期三 14:45:09 起失败(结果:start-limit-hit) 东部标准时间; 43 秒前
文档:https://docs.docker.com
进程:4810 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited, status=1/FAILURE) 主 PID:4810(code=exited,status=1/FAILURE)5 月 12 日 14:45:07 iti-554 systemd[1]: docker.service: 输入单位 失败状态。
5 月 12 日 14:45:07 iti-554 systemd[1]: docker.service: 结果失败 '退出代码'。
5 月 12 日 14:45:09 iti-554 systemd[1]: docker.service: 服务延迟 时间结束,计划重启。
5 月 12 日 14:45:09 iti-554 systemd[1]:停止 Docker 应用程序 容器引擎。
5 月 12 日 14:45:09 iti-554 systemd[1]: docker.service: 启动请求 重复得太快了。
5 月 12 日 14:45:09 iti-554 systemd[1]: 无法启动 Docker 应用程序 容器引擎。
5 月 12 日 14:45:09 iti-554 systemd[1]: docker.service: 输入单位 失败状态。
5 月 12 日 14:45:09 iti-554 systemd [1]: docker.service: 结果失败 '开始限制命中'。
据我了解,这意味着未加载 docker 守护程序(它处于 失败状态),最后一个原因是 start-limit-hit 有已达到。这可能意味着发生这种情况的另一个原因。
那么,我如何找出我的 docker 守护进程拒绝启动的真正原因?
如果我运行以重置失败的尝试计数器:
systemctl reset-failed docker.service
它返回没有错误,所以我认为它成功了。事实上,当我检查它的状态时:
活动:自 2021 年 5 月 12 日星期三 14:45:09 EEST 以来处于非活动状态(死亡); 14 分钟前
当然,如果我再次运行 docker daemon,它会失败。
有人可以提供有关此问题的任何解决方法吗?我什至尝试在重新启动后调用命令(没有帮助)。
编辑
嗯,就我而言,这个问题相当愚蠢。我添加了一个包含最少内容的daemon.json 文件。只是这个:
cat /etc/docker/daemon.json
{
"insecure-registries": [
"docker-server.com:10022",
"docker-server.com:10023"
],
}
问题是} 之前的悬空逗号使 docker 搜索另一个参数。使用journalctl -u docker 显示的相关消息是:
无法使用文件配置 Docker 守护程序 /etc/docker/daemon.json: 无效字符 '}' 寻找开头 对象键字符串
很明显,但之前的帮助不大。
【问题讨论】:
-
journalctl -u docker为您提供 docker 守护进程日志。也许你可以在那里找到一些东西。通过编辑将输出包含在您的问题中。 -
谢谢,@Pawel。我发现了我的错误。我在 daemon.json 中的 } 之前有一个悬空的逗号。如果您可以发布我可以接受的答案。
标签: docker