Як автозапустити контейнер докера при перезавантаженні системи?


46

Оскільки я розмістив сайт WordPress у контейнерах докера, і я хочу, щоб ці контейнери запускалися під час завантаження завжди, тому потрібно робити це вручну.


яку версію ubuntu ви використовуєте?
— Maythux

за допомогою сервера ubuntu 14.04
— nayan tiwari

Це було запитано на ServerFault .
— Дан Даскалеску

Перехресно. Виберіть один сайт (не багато) для публікації речей на.
— Thomas Ward

Відповіді:


34

До цього часу я не думаю, що існує спосіб зробити це нормально. Хитрим рішенням є використання політики перезавантаження

sudo docker run --restart=always -d your_image

Це означає, що кожен раз, коли ви закриєте, цей вихід буде виходити з вашого контейнера, так що при запуску хоста, це призведе до перезавантаження докера.


як я шукаю про це є деякі засоби автоматизації, як шеф-кухар, але не знаю, як ними користуватися
— nayan tiwari

Це ще експериментальний для Ubuntu github.com/bflad/chef-docker/blob/master/README.md
— Maythux

2
Чому б не використати для цього можливості системи? і початкові, і системні можуть впоратися з цим ідеально
— Решин

29

Дуже поширений випадок використання для додавання політики перезавантаження до наявного контейнера.

Це можна зробити за допомогою наступної команди: docker update --restart {no,on-failure,unless-stopped,always} container_name

Детальніше: Docker - запускайте контейнери автоматично


2
Це прекрасно вирішило мою проблему! У мене був контейнер зі своєю базою даних, і я хотів, щоб він запустився, коли почався мій Mac. Вказавши, що його зображення завжди було перезапущено (якщо не зупинено), це зробило трюк!
— Колін

21

Оскільки ubuntu 15 тепер підтримує systemd, зразок для цього менеджера:

someservicename.service

[Unit]
Description=Some service
Requires=docker.service
After=docker.service

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

[Install]
WantedBy=multi-user.target

Більше доступно на сайті докера

PS Досить милий конфігуратор :)


4

Що я зробив - це використовувати файли Upstart.

Ви можете знайти приклади та інші рішення на веб-сайті Docker .

Створіть такий файл у / etc / init:

Description "My container"
start on filesystem and started docker
stop on runlevel [!2345]
respawn
script
   /usr/bin/docker start -a mycontainer
end script
pre-stop script
  /usr/bin/docker stop mycontainer
end script

Зауважте, що з Docker 1.2 існує політика перезавантаження, яка також може допомогти автоматично перезапустити контейнери під час запуску послуги докера (наприклад, після завантаження).

Personnaly, я використовую лялечку, щоб забезпечити свою робочу станцію і використовую цей модуль Docker для автоматичного створення сценаріїв запуску, які є більш повними (запуск, зупинка, перезапуск, чисті параметри ...)


1
напад мертвий. використовувати systemd.
— AmirHossein
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.