Подтвердить что ты не робот

Как создать контейнер Docker автоматически при загрузке системы?

Предположим, что у меня есть контейнер Docker, который я хочу запустить, тогда я могу позвонить

$ docker run ...

и все в порядке. Есть ли встроенный способ запуска контейнера таким образом, что он будет перезагружен автоматически, если система выйдет из строя и перезагрузится?

Если это так, это также доступно в Docker Compose?

4b9b3361

Ответ 2

Если вы хотите, чтобы контейнер запускался, даже если ни один пользователь не выполнил вход в систему (например, виртуальная машина VirtualBox, которую я только запускаю и не хочу входить каждый раз). Вот шаги, которые я выполнил для Ubuntu 16.04 LTS. В качестве примера я установил контейнер oracle db:

$ docker pull alexeiled/docker-oracle-xe-11g
$ docker run -d --name=MYPROJECT_oracle_db --shm-size=2g -p 1521:1521 -p 8080:8080 alexeiled/docker-oracle-xe-11g
$ vim /etc/systemd/system/docker-MYPROJECT-oracle_db.service

и добавьте следующий контент:

[Unit]
Description=Redis container
Requires=docker.service
After=docker.service

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

[Install]
WantedBy=default.target

и включите службу при запуске

sudo systemctl enable docker-MYPROJECT-oracle_db.service

Для получения дополнительной информации https://docs.docker.com/engine/admin/host_integration/

Ответ 3

Политика перезапуска по умолчанию - no.

Для созданных контейнеров используйте docker update для обновления политики перезапуска.

docker update --restart=always 0576df221c0b

0576df221c0b - это идентификатор контейнера.

Ответ 4

Более "нежный" режим из документации:

docker run -dit --restart unless-stopped <image_name>

Ответ 5

Я хотел добиться запуска контейнера при загрузке в Windows.

Поэтому я только что создал запланированное задание, которое запускается при загрузке системы. Эта задача просто запускает "Docker для Windows.exe" (или как называется исполняемый файл Docker).

Затем запустятся все контейнеры с политикой перезапуска "всегда".

Ответ 6

Вот для чего предназначен crontab:

@reboot sleep 10 && docker start <container name> 2>&1 | /usr/bin/logger -t 'docker start'

Получите доступ к своему пользовательскому хронтабу с помощью crontab -e или покажите его с помощью crontab -l, или отредактируйте системный хронтаб в /etc/crontab