简体   繁体   中英

Docker container exiting when launched with Fleet

I am launching a Docker container on CoreOS using Fleet via the following system file:

[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

The main Docker command I am executing here is docker run -d -p 1337:1337 --name devnews-core imjacobclark/devnews-core which when executed standalone works correctly and has the desired outcome of a web service being exposed on port 1337.

However, when I execute fleetctl devnews-core.service , Fleet states the launch is done, however keeps repeating the launch, this is because upon npm install within the container, Docker exits.

Starting the service via Fleet:

core@coreos01 ~/devnews-coreos/fleet $ fleetctl start devnews-core.service 
Unit devnews-core.service launched on 8fdc9312.../

Logs:

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

The node stating Docker has failed:

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

This container is simply built of the standard Docker Node.js container from the public DockerHub registry and is committed after I have built my app into the container.

Am I missing anything vital from my service file to cause Fleet to not launch the container correctly?

The answer was simple, don't start Docker in demonised mode, the correct system file should be as follows:

[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

Essentially, the Docker run command should be as follows:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM