2014-10-20 31 views
1

我一直在嘗試使用FleetCtl啓動docker映像,其中一個是數據卷映像,另一個是使用-volumes-from選項啓動的Nginx映像。 Nginx映像將不會繼續在CoreOs服務器上運行,但如果我轉到服務器並鍵入命令docker,則啓動映像並開始運行。是否有啓動Docker鏡像並使用Fleet數據量的映像?使用CoreOS和Fleet啓動具有數據卷的映像

泊塢文件體積:

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 

回答

0

您提供的Dockerfile在我的Docker主機上運行時出錯(不使用艦隊);也許當船隊檢測到錯誤時,它將爲您移除容器,而在Docker主機上,儘管出現錯誤,但容器仍處於停止狀態。

這裏的錯誤:

$ 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 

請嘗試以下CMD語句進行Dockerfile,看看它是否確實改變了船隊的行爲。

CMD ["/bin/true"] 
+0

這似乎已經成功了。我按照我列出的方式嘗試了它,並且根本沒有CMD行,那些行不通。第二個容器現在似乎是在我與一個本地的CoreOS集羣一起運行的情況下正在拾取卷。 – 2014-10-20 18:41:03

0

如果您nginx.service啓動和運行直接在CoreOS服務器乳寧泊塢窗運行命令,mayby你的問題不是在搬運工的圖像,但nginx.service。

通知您配置與服務:

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

試圖殺死並去除NGINX容器,但您用--rm當它失敗或退出時自動刪除該容器。

也許你的服務無法啓動,因爲其ExecStartPre失敗

嘗試包括

Requires=nginxData.service 
After=nginxData.service 

了。

+0

這是我之前遇到的一個問題,這就是爲什麼我在文件中添加了= - 這將使服務文件繼續執行,即使在執行行時存在問題。 – 2014-10-20 18:07:22