麒麟 docker 自启动失败

docker

问题描述:
自启动时出现超时问题
start operation timed out. Terminating
在这里插入图片描述
排查流程:
journalctl -u docker.service

....
module=grpc
Jan 04 11:17:13 control03-55 dockerd[4466]: time="2023-01-04T11:17:13.302749974+08:00" level=info msg="blockingPicker: the picked transport is not ready, loop back to repick" module=grpc
Jan 04 11:17:13 control03-55 dockerd[4466]: time="2023-01-04T11:17:13.302751557+08:00" level=info msg="pickfirstBalancer: HandleSubConnStateChange: 0xc000099cd0, CONNECTING" module=grpc
Jan 04 11:17:13 control03-55 dockerd[4466]: time="2023-01-04T11:17:13.302848664+08:00" level=info msg="pickfirstBalancer: HandleSubConnStateChange: 0xc000099cd0, READY" module=grpc
Jan 04 11:17:13 control03-55 dockerd[4466]: time="2023-01-04T11:17:13.303117153+08:00" level=info msg="subscribe ctx=context.Background.WithCancel.WithCancel.WithValue(type peer.peerKey, val <not Stringer>).WithValue(type metadata.mdIncomingKey, val <not Stringer>).WithValue(type grpc.streamKey, val <not Stringer>).WithCancel fs=[namespace==plugins.moby,topic~=|^/tasks/|]"
Jan 04 11:17:20 control03-55 dockerd[4466]: time="2023-01-04T11:17:20.402577206+08:00" level=info msg="[graphdriver] using prior storage driver: overlay2"
Jan 04 11:18:40 control03-55 systemd[1]: docker.service: start operation timed out. Terminating.
Jan 04 11:18:40 control03-55 dockerd[4466]: time="2023-01-04T11:18:40.862071014+08:00" level=info msg="Processing signal 'terminated'"

为什么会超时?
每一个系统服务都有自己的启动时间限制,如果超时,会被systemd kill 掉;
如果服务的超时时间配置的比较小,就会出现意外kill

如何配置超时时间?
提到配置时间,就要配置这个服务的systemd 相关配置,涉及到三个目录:

/etc/systemd/systemLocal configuration
/run/systemd/systemRuntime units
/lib/systemd/systemUnits of installed packages

如果配置了相同配置,则优先级由高到低

  • /etc/systemd/system:放置的是系统管理员安装的单元,但是实际使用过程中,用户可以自定义服务配置文件,并且放置在该目录,将该服务的配置文件的优先级提高
  • /run/systemd/system:这个目录一般是进程在运行时动态创建unit文件的目录,一般很少修改,除非是修改程序运行时的一些参数时,即Session级别的,才在这里做修改
  • /lib/systemd/system:包含的是软件包安装的单元,也就是说通过yum、dnf、rpm等软件包管理命令管理的systemd单元文件,都放置在该目录下

如何查看当前配置?

1、可以看到当前麒麟设置的docker 超时为 90s

[root@HS144 ~]# systemctl show docker |grep ^Timeout
Failed to parse bus message: Invalid argument
TimeoutStartUSec=1min 30s
TimeoutStopUSec=1min 30s
TimeoutAbortUSec=1min 30s

2、对比centos /lib/system/systemd/ 配置发现有TimeoutSec=0,可以通过修改/lib/system/systemd/docker.service 方式,使超时时间无穷大
在这里插入图片描述
3、添加自己的配置在/etc/system/systemd/
echo -e “[Service]\nTimeoutStartSec=0” > /etc/systemd/system/docker.service.d/startup-timeout.conf

4、使能配置

[root@x ctsiadmin]# systemctl daemon-reload
[root@x ctsiadmin]# systemctl show docker |grep ^Timeout
TimeoutStartUSec=infinity

解决方案:
系统安装时,默认会将unit文件放在/lib/systemd/system目录。如果我们想要修改系统默认的配置,比如docker.service,一般有两种方法:

在/etc/systemd/system目录下创建docker.service文件,里面写上我们自己的配置。
在/etc/systemd/system下面创建docker.service.d目录,在这个目录里面新建任何以.conf结尾的文件,然后写入我们自己的配置。推荐这种做法
不建议直接修改/lib/systemd/system 因为这样就不知道原生的rpm 配置文件内容,而且重新安装rpm 后会覆盖此文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值