#linux #image #docker #containers
#linux #изображение #docker #контейнеры
Вопрос:
Мой базовый образ — это centos/systemd.so
мой cmd, который будет содержать /usr/sbin/init
, но я также хочу запустить файл сценария оболочки при создании контейнера.
мой файл Dockerfile:
FROM centos/systemd
#RUN yum -y install dos2unix
CMD ["usr/sbin/init"] //here i also want to launch a shell script file
Комментарии:
1. Что вы уже пробовали? Нужен ли вам systemd, и если да, то зачем? Другой очевидной альтернативой является преобразование вашего скрипта в модульный файл systemd.
2. @DavidMaze init — это двоичный файл, поэтому мы не можем переделать мой скрипт в файл инициализации systemd. Я не хочу, чтобы systemd запускал некоторые процессы, и для systemd есть много других причин
Ответ №1:
Редактировать с помощью решения:
FROM centos/systemd
ADD /path-to-hello/hello.sh ./
ENTRYPOINT ["./hello.sh"]
Последняя строка в hola.sh
exec /usr/sbin/init
Сборка docker: docker build -t DockerImageName:1.0 .
Запустите docker: docker run --name DockerName DockerImageName:1.0
Комментарии:
1. можете ли вы дать подробное объяснение использования —init.my вариант использования: мне нужно запустить /usr/sbin/init и файл сценария оболочки при создании контейнера, но файл docker может содержать только один cmd
2. Я думаю, вам нужно использовать
ENTRYPOINT
, а неCMD
. Последняя строка в вашем скрипте может бытьexec /usr/sbin/init
, и с ее помощью вы можете запустить свой скрипт и/usr/sbin/init
при создании контейнера. Я думаю, вам нужно использоватьENTRYPOINT
, а не `CMD. The last line in your script can be
exec / usr / sbin / init`, и с его помощью вы можете выполнить свой скрипт и `/ usr / sbin / init` при создании контейнера.3. предположим, что имя моего файла оболочки hello.sh и сервис — это /usr/sbin/init, как запускать оба, когда создается контейнер
4.
FROM centos/systemd ADD /path-to-hello/hello.sh ./ ENTRYPOINT ["./hello.sh"]
Последняя строка в hola. sh — этоexec /usr/ sbin/init
Build docker:docker build -t DockerImageName:1.0 .
Запустите docker:docker run --name DockerName DockerImageName:1.0