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.