【发布时间】:2015-02-24 01:13:37
【问题描述】:
我有一个单元,运行 docker 映像的“最新”标签。最新的镜像是在第一次启动时通过“docker pull”命令从单元文件中获取的。
但是在任何后续(重新)启动时,“docker pull”命令似乎都没有被执行,因为任何带有“latest”标签的新图像修订都没有被拉取。
在命令行上运行“docker pull ...”按预期工作。
我的服务文件:
[Unit]
Description=Foo
Requires=docker.service
After=docker.service
[Service]
TimeoutStartSec=0
KillMode=none
EnvironmentFile=/etc/environment
ExecStartPre=-/usr/bin/docker kill foo
ExecStartPre=-/usr/bin/docker rm foo
ExecStartPre=/usr/bin/docker login -e foo@example.com -u bla -p xxxxx https://myregistry.example.com && /usr/bin/docker pull myregistry.example.com/foo
ExecStart=/usr/bin/docker run --name foo myregistry.example.com/foo
ExecStop=/usr/bin/docker stop foo
[X-Fleet]
Global=true
这种行为是有意的吗?是否可以解决此问题?
提前致谢!
编辑:运行CoreOS 557.2.0、docker 1.4.1 和fleltd 0.9.0
【问题讨论】:
-
您的
docker pull命令通过&&与docker login命令的成功相关联。如果您已经登录,docker login是否会返回错误? -
不,说“登录成功”。但没有错误代码。
-
systemctl 说 (code=exited, status=0/SUCCESS) 关于命令
-
在 (a) 本单元的日志 (journal -u ...) 或 docker 守护程序日志中是否有任何错误(或诊断)?
-
嗯,你看起来可能是对的。删除“docker login ... ||”时每次重新启动时,一切都会按预期进行。假设 .dockercfg 已经存在并带有凭据......
标签: coreos