如何确保docker服务在containerd升级后启动?

如何确保docker服务在containerd升级后启动?

今天早上我醒来时收到一封来自 watchdog 的“服务已关闭”电子邮件。连接到服务器后,我发现服务docker已关闭。经过一番调查,我发现今天早上 Ubuntu 对该containerd服务进行了无人值守升级,升级后,docker服务没有自动启动。

我如何确保升级后不会再发生这种情况?

答案1

我们遇到了同样的问题。我选择使用 systemd 单元文件在 containerd 和 dockerd 之间创建松散依赖关系。

就是这样:

以 root 身份:

创建覆盖目录(权限 755)

mkdir /etc/systemd/system/containerd.service.d/

在上述目录中创建覆盖文件(权限 644)

vi override.conf

将以下内容添加到文件

[Unit]
Before=docker.service
Wants=docker.service

重新启动 systemd 守护进程

systemctl daemon-reload

检查其是否有效

停止 containerd

systemctl stop containerd

检查 dockerd 是否已停止

systemctl status docker

启动 containerd

systemctl start containerd

检查dockerd已经启动

systemctl status docker

++++++++++++++++++++++++++

一些有关该主题的其他文档的链接

https://www.shellhacks.com/systemd-service-file-example/

https://man7.org/linux/man-pages/man5/systemd.service.5.html

答案2

我将 Docker 及其相关软件包设置为保留,以便它们仅在计划升级时进行升级。

sudo apt-mark hold docker containerd

当我想升级 Docker 时,我会运行apt-mark unhold,升级软件包,然后再次保留它们。我有一个 Ansible 剧本来自动执行此过程。我的安装和配置 Docker 的剧本在安装后直接将软件包设置为保留。

答案3

文档关于docker重启策略很有帮助,根据你的需要使用always或者unless-stopped选项来启动你的容器。

阻止 Ubuntu 进行无人值守升级似乎也是合理的。

相关内容