问题使用CoreOS和Fleet启动具有数据卷的映像

我一直在尝试使用FleetCtl来启动docker镜像,一个是数据卷映像,另一个是使用-volumes-from选项启动的Nginx镜像。 Nginx映像将不会继续在CoreOs服务器上运行,但是如果我去服务器并键入命令docker启动映像启动并运行。 是否有启动Docker镜像的图像与Fleet使用数据量?

卷的Docker文件:

FROM busybox MAINTAINER Zombie Possum VOLUME ["/usr/share/nginx/html", "/usr/share/nginx/conf"] COPY dist /usr/share/nginx/html COPY dist_nginx.conf /usr/share/nginx/conf/dist_nginx.conf CMD ["/usr/bin/true"] 

卷的文件nginxData.service:

 [Unit] Description=Data Container Requires=docker.service After=docker.service [Service] TimeoutStartSec=0 KillMode=none User=core WorkingDirectory=/home/core EnvironmentFile=/etc/environment ExecStartPre=-/usr/bin/docker kill DATA_NGINX ExecStartPre=-/usr/bin/docker rm DATA_NGINX ExecStartPre=-/usr/bin/docker pull private_repo/data_nginx:latest ExecStart=/usr/bin/docker run --name DATA_NGINX private_repo/data_nginx:latest ExecStop=/usr/bin/docker stop DATA_NGINX 

用于nginx.service的舰队文件:

 [Unit] Description=Nginx Container Requires=docker.service After=docker.service [Service] TimeoutStartSec=0 KillMode=none User=core WorkingDirectory=/home/core EnvironmentFile=/etc/environment ExecStartPre=-/usr/bin/docker kill NGINX ExecStartPre=-/usr/bin/docker rm NGINX ExecStartPre=-/usr/bin/docker pull private_repo/nginx:latest ExecStart=/usr/bin/docker run -rm -p 80:80 --name NGINX --volumes-from DATA_NGINX private_repo/nginx:latest ExecStop=/usr/bin/docker stop NGINX [X-Fleet] MachineOf=nginxData.service 

舰队命令:

 fleetctl submit nginxData.service fleetctl submit nginx.service fleetctl start nginxData.service fleetctl start nginx.service 

您提供的Dockerfile在我的Docker主机上运行时出错(不使用舰队); 也许当船队检测到错误时,它会为你移除容器,而在Docker主机上,尽pipe出现错误,但容器仍处于停止状态。

这是错误:

 $ docker build --force-rm -t so-26469566 . $ docker run --name DATA_NGINX so-26469566 exec: "/usr/bin/true": stat /usr/bin/true: no such file or directory2014/10/20 16:59:54 Error response from daemon: Cannot start container 767562758b9f30097a5ed16b98fe818d9c9574bb82b1cfd502bc3403e97d5b0 e: exec: "/usr/bin/true": stat /usr/bin/true: no such file or directory make: *** [run] Error 1 

在你的Dockerfile中尝试下面的CMD语句,看看它是否改变了舰队的行为。

 CMD ["/bin/true"] 

如果你的nginx.service启动并运行在CoreOS服务器上直接运行docker run命令,可能你的问题不在docker镜像中,而是在nginx.service中。

注意你configuration你的服务:

 ExecStartPre=-/usr/bin/docker kill NGINX ExecStartPre=-/usr/bin/docker rm NGINX 

试图杀死和删除NGINX容器,但你用--rm运行容器,当它失败或退出时,会自动删除它。

也许你的服务无法启动,因为它的ExecStartPre失败了

尝试包括

 Requires=nginxData.service After=nginxData.service 

太。