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


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.