使用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