Команда Docker работает в терминале, но не в скрипте

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

Однако в качестве сценария он завершается с ошибкой в ​​следующей строке:

docker exec -it cli bash

При вводе его в терминал используйте пользователя и измените путь на root@someaddress, который, как я полагаю, является новым док-контейнером. Затем -it cli bash должен создать новую среду bash для запуска остальных команд.

Есть ли причина, по которой он не работает как скрипт оболочки?

1
задан 28 June 2018 в 12:46

1 ответ

Команда Bash в Docker

Добро пожаловать в Docker ;-) Команда docker run -it cli bash запускает образ Docker cli, а затем запускает команду bash в качестве оболочки входа в систему внутри контейнера. Таким образом вы получаете приглашение root@someaddress. Так что все как положено.

Если вы хотите выполнить команду внутри контейнера (и выйти из контейнера после этого), используйте это:

docker run -it cli bash -c "echo hello from \$host; ls -la /"

Остерегайтесь, цитирование важно после переключателя -c. Если вам нужна дополнительная информация о проверке command_string, обратитесь к man-странице bash .

Выполнить команду (команды) в контейнере

Есть много способов получить команды bash, выполняемые внутри контейнера:

# mount the script into the container with -v
script=$(readlink -f myscript.sh)
docker run -it -v $script:$script cli bash $script

# use bash array to pass the commands into the container
cmd_list=()
cmd_list+=(echo cmd1)
cmd_list+=(echo cmd2)
cmd_list+=(echo done)
docker run -it cli bash -c "${cmd_list[*]}"

# google: bash here script
-1
ответ дан 28 June 2018 в 12:46

Другие вопросы по тегам:

Похожие вопросы: