Dockerd启动慢

less than 1 minute read

Published:

在Arch Linux上第一次手动启动 dockerd 需要两分钟,结果发现是 systemcd-networkd-wait-online 在等待所有网卡就绪。

在dockerd启动并且卡住的过程中可以在另外的终端查看当前的job:

systemctl list-jobs

可以发现是在等待 systemd-networkd-wait-online 的完成。

networkctl --all status

可以看到我的有线网没接, 所以state一直是 configuring, 但是无线网是已经就绪了的。

从status中可以看到有线网的 Link File, 修改卡住的有线网对应的 Link File, 添加:

RequiredForOnline=no

这样就不会阻塞后面的进程启动了, 因为我我的电脑本身也没有接无线网卡。

另外也可以再编辑一下 systemd-networkd-wait-online 的配置:

sudo systemctl edit systemd-networkd-wait-online.service

添加override

[Service]
ExecStart=
ExecStart=/usr/bin/systemd/systemd-networkd-wait-online --any

只要有任意一个网卡就绪就算完成,防止一直等待。

其他依赖 network-online 的service都可能遇到这个类似的问题。

经过这样修改后,就可以把dockerd也添加到自动启动的服务中去了,启动的时候也不会卡死了。