随笔 - 104  文章 - 2 评论 - 9 阅读 - 18万
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

一开始报错,只是模糊的知道daemon.json写的有问题

然后死抠格式问题,无奈还是报错,感觉daemon.json书写成了玄学

直到后来找到了docker启动报错日志,问题才迎刃而解,顿时感觉这个问题变得通透了,不再是晕晕乎乎了

所以做技术,一定要有刨根问底的精神,知其然知其所以然,这样才会越做越通透,越做越轻松

首先我的daemon.json是这样的

复制代码
{
  "log-driver": "json-file",
  "log-opts": {
    "cache-disabled": "false",
    "cache-max-file": "5",
    "cache-max-size": "20m",
    "cache-compress": "true",
    "max-file": "1",
    "max-size": "200m"
  },
  "registry-mirrors": ["xxx"],
  "insecure-registries":["xxx"]
}
复制代码

重启之后报错,上面提示的两个命令也不能很好的看到报错

其实有一个命令可以很清楚的看到启动日志,就是

journalctl -u docker.service

打开日志之后,按shift+G跳到日志最下面,慢慢往上翻,这边可以可以清楚的看到原因是,不支持cache参数,可能是版本太旧了

 :q退出日志之后,索性把cache参数全部去掉,修改之后的daemon.json为

复制代码
{
  "log-driver": "json-file",
  "log-opts": {
    "max-file": "1",
    "max-size": "200m"
  },
  "registry-mirrors": ["xxxx"],
  "insecure-registries":["xxxx"]
}
复制代码

重启之后一切正常

 

总结:

当遇到docker无法启动的问题,可以通过查看启动日志解决

一般问题有以下几种:

1.daemon.json 格式有误

2.daemon.json中引用的模块不支持

 

 

另外看别人还遇到了其他状况,特地记录下:

这次是由于failed to start daemon: failed to dial "/run/containerd/containerd.sock": unknown service containerd.services.namespaces.v1.Namespaces: not implemented,启动失败次数太多导致停止启动,这个地方试了很多办法都没能搞定。。。

终于在Docker daemon and Containerd dockerd out of sync in 18.09 #421 这个issue中看到了这个方法,先将containerd停掉,再启动(发现直接restart不管用,):

systemctl stop containerd
systemctl start containerd

#启动docker
systemctl start docker.service

 

 

参考文档:

https://www.jianshu.com/p/58e5859d3670

posted on   06  阅读(12337)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
点击右上角即可分享
微信分享提示