docker在容器外执行容器代码,docker重启指令顺序执行,流程自动化,Linux shell执行一次执行多个命令

假设您的Docker容器已启动并正在运行,则可以运行以下命令:


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

有时候我们想执行某个容器的某条命令,但又不想进入容器内。那该怎么办?
于是脚本可以这样写

DOCKER_ID=62f3f40ab240
sudo docker exec -it $DOCKER_ID /bin/bash -c 'cd /packages/detectron && python tools/train.py'
# 或
sudo docker exec $DOCKER_ID /bin/bash -c 'cd /packages/detectron && python tools/train.py'

注意事项:
-it 有可能造成命令不执行,特别是在程序调用时,确认的确需要再加上-it

2.1流程脚本自动化,按顺序执行命令

docker restart work-order-consolidation-disposal-qa \
&& docker exec -it work-order-consolidation-disposal-qa /bin/bash -c 'cd model && python red_semantics_cls.py' \
&& docker restart work-order-consolidation-disposal-qa

2.2Linux shell执行一次执行多个命令

多命令执行符	格 式	作 用
;	命令1 ; 命令2	多条命令顺序执行,命令之间没有任何逻辑关系
&&	命令1 && 命令2	如果命令1正确执行($?=0),则命令2才会执行
如果命令1执行不正确($?0),则命令2不会执行
II	命令1 || 命令2	如果命令1执行不正确($?0),则命令2才会执行
如果命令1正确执行($?=0),则命令2不会执行
一、shell执行多个命令
1.1 每个命令之间用;隔开

这种方式下每个命令的执行给果,不会影响其它命令的执行。换句话说,每个命令都会执行, 但不保证每个命令都执行成功。

ls;cat file_name
1.2 每个命令之间用&&隔开

这种方式下若前面的命令执行成功,才会去执行后面的命令。这样可以保证所有的命令执行完毕后,执行过程都是成功的。

cat file_name&&ls
1.3 每个命令之间用||隔开

||是或的意思,只有前面的命令执行失败后才去执行下一条命令,直到执行成功一条命令为止。

三、容器

在这里插入图片描述

四、虚拟环境

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_15821487/article/details/121307925