Чому контейнер докер не запускається при завантаженні w / upstart скрипту на Ubuntu 12.04?


15

Використовуючи вказівки щодо автоматичного запуску Docker на Linode VPS під керуванням Ubuntu 12.04 та Docker 0.8.1, зазначений контейнер не запускається при перезавантаженні.

Після завантаження я вмію

~$ sudo start [service-name]

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

Чи сценарій у підручнику не призначений для обробки перезавантажень?

/ etc / default / docker файл містить один рядок:

DOCKER_OPTS="-r=false"

/etc/init/service-name.conf прямо зі сторінки докера:

description "service description"                                                                                                            
author "me"
start on filesystem 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 db5e61a9afa8
end script

2
Який вміст вашого початкового сценарію та /etc/default/docker?
Бруно Перейра

Відповіді:


6

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

Мій сценарій /etc/init/service-name.conf тепер виглядає так:

description "service description"                                                                                                            
author "me"
start on filesystem and started docker
stop on runlevel [!2345]
respawn
script
    /usr/bin/docker start -a db5e61a9afa8
end script

Я не впевнений, що було з цим циклом. Можливо, він вказував на неправильний файл у моїй системі, хоча я не вносив жодних змін до встановлення докера за замовчуванням. Наразі я щасливий, що виправлення пов'язане з видаленням коду замість складної роботи.


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

Ви не можете зупинити контейнер таким чином, видавши команду stop service-name. Я стикаюся з цим питанням :(
Ахмед Аль Хафуд

3

Для всіх, хто використовує ubuntu 14,04 apt-get taste docker. Вам просто потрібно змінити сценарій запуску, щоб чекати на "docker.io", а не на "docker" так:

description "Docker startup script for yum_repo"
author "me"
start on filesystem and started docker.io
stop on runlevel [!2345]
respawn
script
  /usr/local/bin/docker start -a yum_repo_run
end script

1

Я використовую Ubuntu 13.10 в якості хоста, і у мене була та сама проблема. Я виявив, що docker встановлює rc-скрипт для docker в /etc/init.d/dockerі в той же час встановлює початковий сценарій за адресою /etc/init/docker.conf. Мені просто довелося видалити сценарій rc/etc/init.d/docker щоб ця проблема пішла.

Сподіваюся, це працює і для вас.


На жаль, цей для мене не працював.
Джоді

0
DOCKER_OPTS="-r=false"

Це означає: Не перезавантажуйте раніше запущені контейнери.

Видаліть -rопцію або змініть її на істинну.


2
Правильно, але справа в тому, щоб перезапустити контейнер для запуску операцій, а не демон-докер. Якщо демон докера запускає контейнер при перезавантаженні, процесом неможливо керувати запуском.
Джоді

0

/var/run/docker.sockє сокетом, тому його потрібно використовувати -Sпри тестуванні на наявність:

FILE=/var/run/docker.sock
while [ ! -S $FILE ] ; do
    inotifywait -t 2 -e create $(dirname $FILE)
done
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.