使用shell脚本在Docker容器内运行脚本

我是新来的Docker技术,我正在尝试创build一个shell脚本来设置一个docker容器,我的脚本文件看起来像下面

#!bin/bash docker run -t -i -p 5902:5902 --name "mycontainer" --privileged myImage:new /bin/bash 

运行这个脚本文件将在一个新调用的bash中运行容器。

现在我需要运行一个脚本文件(test.sh),它已经在上面给出的shell脚本的容器里了(例如:cd /path/to/test.sh && ./test.sh)请问怎么做随意问,如果情况不明确。

您可以使用docker exec [OPTIONS] CONTAINER COMMAND [ARG...]在正在运行的容器中运行docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

 docker exec mycontainer /path/to/test.sh 

并从一个bash会话运行:

 docker exec -it mycontainer /bin/bash 

从那里你可以运行你的脚本或任何其他。

假设您的docker容器启动并运行,您可以运行命令为:

 docker exec mycontainer /bin/sh -c "cmd1;cmd2;...;cmdn" 

我正在寻找这个问题的答案,并find了在我的Dockerfile解决scheme中的ENTRYPOINT。

Dockerfile

 ... ENTRYPOINT /my-script.sh ; /my-script2.sh ; /bin/bash 

现在脚本在启动容器时执行,脚本执行后我得到了bash提示符。

看看入口点。 您将能够使用多个CMD https://docs.docker.com/engine/reference/builder/#/entrypoint

如果你想在多个实例上运行相同的命令,你可以这样做:

 for i in c1 dm1 dm2 ds1 ds2 gtm_m gtm_sl; do docker exec -it $i /bin/bash -c "service sshd start"; done