如何启动docker文件的船队docker?

我只是试验coreOS,docker和舰队。 我有下一个dockerfile:

FROM ubuntu:14.04 RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list RUN apt-get update RUN apt-get -y install nginx RUN echo "daemon off;" >> /etc/nginx/nginx.conf RUN mkdir /etc/nginx/ssl ADD default /etc/nginx/sites-available/default EXPOSE 80 CMD ["nginx"] 

我从这个文件创build了一个图像(“nginx-example”),我可以启动容器:

 docker run -v /home/core/share:/var/www:rw -p 80:80 -d nginx-example 

现在,我想用舰队来启动它,所以我承认我必须创build一个服务文件,然后用舰队启动它。

所以我尝试创buildde服务文件(nginx1.service):

 [Unit] Description=MyTry After=docker.service Requires=docker.service [Service] TimeoutStartSec=0 ExecStartPre=-/usr/bin/docker kill nginx ExecStartPre=-/usr/bin/docker rm nginx ExecStartPre=/usr/bin/docker pull nginx-example ExecStart=/usr/bin/docker docker run -p 80:80 -d nginx-example ExecStop=/usr/bin/docker stop nginx 

我submmited和开始,但是当我这样做:

 fleetctl list-units nginx1.service cbbed2c1.../IP failed failed 

而我不能运行Web服务器。 我认为问题是在服务文件,但我不知道如何构build它。 谢谢。

这是你的服务文件中的一个关键线,应该让你思考:

 ExecStartPre=/usr/bin/docker pull nginx-example 

你认为这个图像是从哪里拉出来的?
为了拉出图片,你需要先把它到某个地方。 最简单的,当然是DockerHub 。 您将需要创build一个帐户。 我将离开创build帐户,存储库和configuration身份validation的练习,因为这里的文档很容易find。

现在,如果你只是尝试docker push nginx-example ,它会失败,因为它需要通过标签与用户帐户的名称空间相关联。 为了这个答案,我们假设你的账户是kimberlybf

$ docker tag nginx-example:latest kimberlybf/nginx-example:latest – 这将正确地标记您的图片推送到DockerHub。

$ docker push kimberlybf/nginx-example:latest – 这实际上会推动你的形象。 该图像将公开,所以不要把任何敏感的数据在你的configuration。

然后,您将修改您的Service ,并相应地replace容器标签,并记住为您的容器命名,例如:

 [Service] TimeoutStartSec=0 ExecStartPre=-/usr/bin/docker kill nginx ExecStartPre=-/usr/bin/docker rm nginx ExecStartPre=/usr/bin/docker pull kimberlybf/nginx-example:latest ExecStart=/usr/bin/docker docker run -p 80:80 -d --name nginx kimberlybf/nginx-example:latest ExecStop=/usr/bin/docker stop nginx 

您不应该在守护进程模式(-d)下启动容器:

“如果要修改这些单元,请确保不要复制以分离模式(-d)启动容器的docker run命令。独立模式不会将容器作为本机pid的子项启动。将导致单位运行几秒钟,然后退出。“

https://coreos.com/docs/launching-containers/launching/fleet-example-deployment/#service-files

这工作:

 [Service] TimeoutStartSec=0 ExecStartPre=/usr/bin/docker pull kimberlybf/nginx-example:latest ExecStart=/usr/bin/docker run -p 80:80 -d --name nginx kimberlybf/nginx-example:latest 

我把我的图片推送到DockerHub。