3

Я пытаюсь выполнить скрипт во время запуска контейнера.

Для нормальной машины Linux, если у меня есть скрипт в /etc/rc.local скрипт будет выполняться при перезагрузке

Я пытаюсь сделать то же самое при создании образа Docker. Я перезаписываю файл /etc/rc.local новым содержимым, затем выполняю

sudo docker run -d <image id>

Я ожидал, что /etc/rc.local будет выполнен, но ничего не происходит.

Я делаю это не в том месте?

1 ответ1

1

Docker запускает только тот процесс (или процессы), о котором вы говорите.

Контейнеры Docker обычно не имеют работающей системы инициализации. Они не похожи на виртуальные машины, которые содержат полную операционную систему, которая выполняет всю инициализацию при загрузке.

Если вы хотите, чтобы /etc/rc.local запускался, вы должны запустить его самостоятельно. Что-то вроде:

docker run image /bin/bash -c "/etc/rc.local; <your command>"

Есть несколько альтернативных базовых образов, которые поддерживают запуск служб при запуске, например, phusion/baseimage-docker.

Прочтите эту статью, чтобы понять, какие проблемы возникают у Docker и при запуске контейнера.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .