一
假设您的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 每个命令之间用||隔开
||是或的意思,只有前面的命令执行失败后才去执行下一条命令,直到执行成功一条命令为止。