2016-06-12 2 views
1

Я создал свое собственное собственное изображение.Автоматический запуск команды внутри контейнера докера после запуска + монтирования тома

FROM python:2.7.11 
RUN mkdir /extra/later/ \ 
    && mkdir /yyy 

Теперь я в состоянии выполнить следующие действия:

docker run -d -v xxx:/yyy myimage:latest 

Так что теперь мой объем, установленный внутри контейнера. Я собираюсь открыть и я в состоянии выполнять команды на этом смонтированного тома внутри моего контейнера:

docker exec -it container_id bash 
bash# tar -cvpzf /mybackup.tar -C /yyy/ . 

Есть ли способ автоматизировать это шаги в Dockerfile или описывающие команды в вашей команде docker run?

+0

Вам просто нужно «CMD»? –

+0

Контейнерная команда 'tar-command.' не найден или не существует .. (может быть, потому, что это происходит до монтирования тома?) – DenCowboy

+0

Что вы подразумеваете под «автоматизацией»? Запускать команду по расписанию без участия? – Matt

ответ

0

Попробуйте использовать опцию CMD в Dockerfile для запуска команды TAR

CMD tar -cvpzf /mybackup.tar -C /yyy/ . 

или

CMD ["tar", "-cvpzf", "/mybackup.tar", "-C", "/yyy/", "."] 
1

Команды, выполняемые в Dockerfile построить изображение, а объем прикреплен к работающему контейнер, поэтому вы не сможете запускать свои команды внутри самого файла Docker и влиять на громкость.

Вместо этого вы должны создать сценарий запуска, который является командой, выполняемой вашим контейнером (через CMD или ENTRYPOINT в вашем файле Docker). Поместите логику внутри сценария запуска, чтобы обнаружить, что ему нужно инициализировать том, и он будет запускаться при запуске контейнера. Если вы запустите скрипт с помощью CMD, вы сможете переопределить выполнение этого скрипта с любой командой, которую вы передаете docker run, что может или не может быть хорошей вещью в зависимости от вашей ситуации.

Смежные вопросы