Назад | Перейти на главную страницу

Docker запускает сценарий bash, затем удаляет контейнер

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

я пробовал

docker run --rm -ti ubuntu:trusty bash -c 'source runme.sh'

но bash не может найти файл, я предполагаю, потому что контейнер не имеет доступа к папке, где находится скрипт.

Если скрипт недоступен внутри контейнера, вам нужно смонтировать скрипт как том внутри контейнера:

$ cat << EOF > sample_script.sh
echo 'Hello, world'
EOF

Запустите док-контейнер следующим образом (здесь /path/to/sample_script.sh это путь в хосте):

$ docker run -v /path/to/sample_script.sh:/sample_script.sh \
  --rm ubuntu bash sample_script.sh

Hello, world

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

В докер запустить Ссылка содержит подробную информацию об использовании томов таким образом.

Если все, что вам нужно сделать, это выполнить сценарий, вы можете просто использовать bash для чтения сценария из stdin.

sample_script.sh < docker run --rm -i ubuntu bash -c 'source /dev/stdin'