mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00

Docker-DCO-1.1-Signed-off-by: Sven Dowideit <SvenDowideit@fosiki.com> (github: SvenDowideit)
63 lines
1.9 KiB
Markdown
63 lines
1.9 KiB
Markdown
page_title: Automatically Start Containers
|
||
page_description: How to generate scripts for upstart, systemd, etc.
|
||
page_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 can then attach a process manager to manage it.
|
||
When your run `docker start -a` docker will
|
||
automatically attach to the running container, or start it if needed 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
|
||
`--name redis_server`. 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
|
||
/usr/bin/docker start -a redis_server
|
||
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 redis_server
|
||
ExecStop=/usr/bin/docker stop -t 2 redis_server
|
||
|
||
[Install]
|
||
WantedBy=local.target
|