Следуя инструкциям по настройке системы блокчейна, мой коллега переместил все в сценарий, так как его нужно запускать несколько раз.
Однако в качестве сценария он завершается с ошибкой в следующей строке:
docker exec -it cli bash
При вводе его в терминал используйте пользователя и измените путь на root@someaddress
, который, как я полагаю, является новым док-контейнером. Затем -it cli bash
должен создать новую среду bash для запуска остальных команд.
Есть ли причина, по которой он не работает как скрипт оболочки?
Добро пожаловать в 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