Docker 命令在终端中有效但在脚本中无效

Docker 命令在终端中有效但在脚本中无效

按照说明设置区块链系统后,我的同事将所有内容移到脚本中,因为它需要多次运行。

但是,作为脚本,它在以下行失败:

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

相关内容