12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- :title: Host Integration
- :description: How to generate scripts for upstart, systemd, etc.
- :keywords: systemd, upstart, supervisor, docker, documentation, host integration
- Host Integration
- ================
- 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:
- .. code-block:: bash
- description "Redis container"
- author "Me"
- start on filesystem and started lxc-net 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 edit the docker upstart script (``/etc/init/docker.conf``)
- so that we run docker with ``-r=false``. In this example, we also ensure
- that docker will start running before *redis* is started.
- .. code-block:: bash
- description "Docker daemon"
- start on filesystem and started lxc-net
- start on (starting redis)
- stop on runlevel [!2345]
- respawn
- script
- /usr/bin/docker -d -r=false
- end script
- Sample systemd Script
- ---------------------
- .. code-block:: bash
- [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
|