Автозапуск контейнера docker на Centos 7

Monoceros

Осваиваю docker. Контейнеры встают, линкуются и работают. Но вот загвоздка: контейнеры не запускаются при перезапуске сервиса docker (либо перезагрузке сервера).

OS: CentOS 7

Создание контейнера

docker run -d --name redmine --link postgresql:postgres -v /opt/docker/redmine/files:/usr/src/redmine/files --publish 80:3000 redmine:latest

Запуск и остановка руками проходит замечательно:

docker start redmine

Хотя и докер должен сам создать запускать указанные контейнеры, но я ещё создал сценарий запуска для systemd

cat /usr/lib/systemd/system/redmine.service 
[Unit]
Description=redmine container
Requires=docker.service
After=docker.service

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

[Install]
WantedBy=local.target

Руками запускается, а при загрузки операционки - нет.

systemctl status redmine
redmine.service - redmine container
   Loaded: loaded (/usr/lib/systemd/system/redmine.service; enabled)
   Active: active (running) since Ср 2015-12-16 10:57:39 MSK; 415ms ago
  Process: 10364 ExecStop=/usr/bin/docker stop -t 2 redmine (code=exited, status=0/SUCCESS)
 Main PID: 10386 (docker)
   CGroup: /system.slice/redmine.service
           └─10386 /usr/bin/docker start -a redmine
1 ответ

Monoceros

Не правильно прочитанная документация ввела в заблуждение. Чтобы контейнеры запускались вместе со стартом докера, то при запуске контейнера надо указать опцию --restart=always . Например:

docker run --name=redmine -d --restart=always --link=memcached:memcached  --link=postgres:postgresql   --volume=/opt/docker/redmine:/home/redmine/data   --publish 80:80 --publish 443:443 sameersbn/redmine:latest

В этом случае всё работает.

supervisord тоже вариант решения. Использовал для других задач.

Так же не забываем об особенностях selinux. Он не давал прилинковать волум. Т.к. мне не нужна параноидальная система безопасности, то я выключил selinux.

licensed under cc by-sa 3.0 with attribution.