在我的用例中,我想在停止docker-daemon之前使用Docker volume备份SystemD。
我使用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:超时”:不可用。
问题显然是由于 ContainerD 不再可用。我尝试过
Requires=network-online.target containerd.service docker.service
没有成功。
如何使我的服务适应Docker v18.09?
答案 0 :(得分:1)
一些用户报告了先前Docker版本(17.12和18.03)中containerd.server的类似问题。应用的解决方法是:
在此link中提到了类似的错误,以及用户在重新启动docker服务后如何解决该问题。
答案 1 :(得分:0)
这很可能是由于fixed中的容器/ docker集成问题cos-73-11647-192-0引起的。您可以在cos-73-11647-192-0上试用吗?