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

202 篇文章 13 订阅
97 篇文章 1 订阅

假设您的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 每个命令之间用||隔开

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

三、容器

在这里插入图片描述

四、虚拟环境

在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值