首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Fleet启动时退出Docker容器

使用Fleet启动时退出Docker容器
EN

Stack Overflow用户
提问于 2015-02-26 07:04:06
回答 1查看 321关注 0票数 0

我通过以下系统文件使用Fleet在CoreOS上启动了一个Docker容器:

代码语言:javascript
复制
[Unit]
Description=Developer News API
After=docker.service
Requires=docker.service

[Service]
ExecStartPre=-/usr/bin/docker kill devnews-core
ExecStartPre=-/usr/bin/docker rm devnews-core
ExecStartPre=/usr/bin/docker pull imjacobclark/devnews-core
ExecStart=/usr/bin/docker run -d -p 1337:1337 --name devnews-core imjacobclark/devnews-core
ExecStop=/usr/bin/docker stop devnews-core
TimeoutStartSec=0
Restart=always
RestartSec=10s

我在这里执行的主要Docker命令是docker run -d -p 1337:1337 --name devnews-core imjacobclark/devnews-core,它在独立执行时可以正常工作,并具有在端口1337上公开的web服务所需的结果。

但是,当我执行fleetctl devnews-core.service时,Fleet声明启动已完成,但是不断重复启动,这是因为在容器内执行npm install时,Docker退出。

通过Fleet启动服务:

代码语言:javascript
复制
core@coreos01 ~/devnews-coreos/fleet $ fleetctl start devnews-core.service 
Unit devnews-core.service launched on 8fdc9312.../

日志:

代码语言:javascript
复制
core@coreos01 ~/devnews-coreos/fleet $ fleetctl --tunnel journal devnews-core.service 
-- Logs begin at Wed 2015-02-25 13:41:25 UTC, end at Wed 2015-02-25 23:08:55 UTC. --
Feb 25 23:08:47 coreos03 docker[6404]: 44d8123e3829: Download complete
Feb 25 23:08:47 coreos03 docker[6404]: 1e278393641a: Download complete
Feb 25 23:08:47 coreos03 docker[6404]: ec0fa4f2b126: Download complete
Feb 25 23:08:47 coreos03 docker[6404]: 0d98c76d34ce: Download complete
Feb 25 23:08:47 coreos03 docker[6404]: eb0a99f0e308: Download complete
Feb 25 23:08:47 coreos03 docker[6404]: eb0a99f0e308: Download complete
Feb 25 23:08:47 coreos03 docker[6404]: Status: Image is up to date for imjacobclark/devnews-core:latest
Feb 25 23:08:47 coreos03 systemd[1]: Started Developer News API.
Feb 25 23:08:47 coreos03 docker[6414]: 1d90cf825518610cbd15a44873c1e2640d40522632ed5417ac91f22b82c20ac4
Feb 25 23:08:47 coreos03 docker[6456]: devnews-core

声明Docker已失败的节点:

代码语言:javascript
复制
core@coreos03 ~ $ docker ps -l
CONTAINER ID        IMAGE                              COMMAND             CREATED             STATUS                       PORTS               NAMES
a5970b9f6819        imjacobclark/devnews-core:latest   "npm start"         6 seconds ago       Exited (143) 5 seconds ago                       devnews-core

这个容器是由公共DockerHub注册表中的标准Docker Node.js容器构建的,并在我将我的应用程序构建到容器中之后提交。

我是否从我的服务文件中遗漏了一些重要的东西,从而导致Fleet无法正确启动容器?

EN

回答 1

Stack Overflow用户

发布于 2015-02-26 07:27:55

答案很简单,不要在妖魔化模式下启动Docker,正确的系统文件应该如下所示:

代码语言:javascript
复制
[Unit]
Description=Developer News API
After=docker.service
Requires=docker.service

[Service]
ExecStartPre=-/usr/bin/docker kill devnews-core
ExecStartPre=-/usr/bin/docker rm devnews-core
ExecStartPre=/usr/bin/docker pull imjacobclark/devnews-core
ExecStart=/usr/bin/docker run -p 1337:1337 --name devnews-core imjacobclark/devnews-core
ExecStop=/usr/bin/docker stop devnews-core
TimeoutStartSec=0
Restart=always
RestartSec=10s

本质上,Docker run命令应该如下所示:

docker run -p 1337:1337 --name devnews-core imjacobclark/devnews-core

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28731400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档