【发布时间】:2019-05-02 07:06:43
【问题描述】:
在我的用例中,我想在 docker-daemon 停止之前使用 SystemD 备份 Docker volume。
我得到了一个使用 Docker 17.03.2 的工作版本。 SystemD服务定义如下:
[Unit]
Description=Backup some Docker volume
Requires=network-online.target docker.service
After=docker.service
[Service]
Type=oneshot
ExecStop=/bin/sh /var/dobackup.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
/var/dobackup.sh 的内容在这里并不重要。它包含一个 docker 命令,该命令使用给定的 Docker 卷并在其上执行 tar。
我在Google cloud compute engine 和container optimized OS 中运行它可能很重要。特别是milestone 69(包括Docker v17.03.2)。
更新到 Docker v18.09.3
现在,我想更新到 Docker v18.09.3(特别是,我正在将正在运行的操作系统更新为 Container Optimized OS milestone 73)。
上面的服务不再起作用。当 /var/dobackup.sh 中的 docker-command 正在运行时,我收到以下错误:
docker:来自守护进程的错误响应:所有 SubConns 都在 TransientFailure,最新连接错误:连接错误:desc = “传输:拨号时出错 unix:///var/run/containerd/containerd.sock: timeout": 不可用。
问题显然在于 ContainerD 不再可用。我试过了
Requires=network-online.target containerd.service docker.service
没有成功。
如何使我的服务适应 Docker v18.09?
【问题讨论】:
标签: docker google-compute-engine systemd