1
0
mirror of https://github.com/moby/moby.git synced 2025-12-12 10:01:33 +03:00
Files
moby/docs/sources/use/host_integration.rst
Andy Rothfusz 9c1e9a5157 Fix #1229. Update titles, fix some wrapping.
Make the Ambassador container explicit.
Apply Sven's suggestions.
2013-12-09 17:23:56 -08:00

2.2 KiB

title
Automatically Start Containers
description
How to generate scripts for upstart, systemd, etc.
keywords
systemd, upstart, supervisor, docker, documentation, host integration

Automatically Start Containers

You can use your Docker containers with process managers like upstart, systemd and supervisor.

Introduction

If you want a process manager to manage your containers you will need to run the docker daemon with the -r=false so that docker will not automatically restart your containers when the host is restarted.

When you have finished setting up your image and are happy with your running container, you may want to use a process manager to manage it. When your run docker start -a docker will automatically attach to the process and forward all signals so that the process manager can detect when a container stops and correctly restart it.

Here are a few sample scripts for systemd and upstart to integrate with docker.

Sample Upstart Script

In this example we've already created a container to run Redis with an id of 0a7e070b698b. To create an upstart script for our container, we create a file named /etc/init/redis.conf and place the following into it:

description "Redis container"
author "Me"
start on filesystem and started docker
stop on runlevel [!2345]
respawn
script
  # Wait for docker to finish starting up first.
  FILE=/var/run/docker.sock
  while [ ! -e $FILE ] ; do
    inotifywait -t 2 -e create $(dirname $FILE)
  done
  /usr/bin/docker start -a 0a7e070b698b
end script

Next, we have to configure docker so that it's run with the option -r=false. Run the following command:

$ sudo sh -c "echo 'DOCKER_OPTS=\"-r=false\"' > /etc/default/docker"

Sample systemd Script

[Unit]
Description=Redis container
Author=Me
After=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a 0a7e070b698b
ExecStop=/usr/bin/docker stop -t 2 0a7e070b698b

[Install]
WantedBy=local.target