按照说明设置区块链系统后,我的同事将所有内容移到脚本中,因为它需要多次运行。
但是,作为脚本,它在以下行失败:
docker exec -it cli bash
当将其输入到终端时,使用用户和路径更改为root@someaddress
我认为是新的 docker 容器。然后-it cli bash
应该创建一个新的 bash 环境来运行其余命令。
有什么原因使得它不能作为 shell 脚本运行吗?
答案1
docker 中的 Bash 命令
欢迎使用 Docker ;-) 该命令docker run -it cli bash
启动 Docker 镜像cli
,然后bash
在容器内以登录 shell 身份运行该命令。这就是您获得root@someaddress
提示的方式。所以一切都如预期的那样。
如果您想在容器内执行命令(然后退出容器),请使用以下命令:
docker run -it cli bash -c "echo hello from \$host; ls -la /"
注意,在 switch 之后引用很重要-c
。如果您需要有关 command_string 的更多信息,请查看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