首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >docker run <IMAGE> <MULTIPLE COMMANDS>

docker run <IMAGE> <MULTIPLE COMMANDS>
EN

Stack Overflow用户
提问于 2015-02-13 09:04:04
回答 8查看 169.2K关注 0票数 302

我正在尝试运行多个这样的命令。

代码语言:javascript
复制
docker run image cd /path/to/somewhere && python a.py

但这给了我“没有这样的文件或目录”错误,因为它被解释为...

代码语言:javascript
复制
"docker run image cd /path/to/somewhere" && "python a.py"

似乎需要一些转义字符,如"“或()。

所以我也试着

代码语言:javascript
复制
docker run image "cd /path/to/somewhere && python a.py"
docker run image (cd /path/to/somewhere && python a.py)

但这些都不起作用。

我已经搜索了Docker Run Reference,但没有找到任何有关转义字符的提示。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2015-02-13 09:07:53

要在docker中运行多个命令,请使用/bin/bash -c和分号;

代码语言:javascript
复制
docker run image_name /bin/bash -c "cd /path/to/somewhere; python a.py"

如果我们需要command2 (python)将被执行当且仅当command1 (cd)返回零(无错误)退出状态时,使用&&而不是;

代码语言:javascript
复制
docker run image_name /bin/bash -c "cd /path/to/somewhere && python a.py"
票数 520
EN

Stack Overflow用户

发布于 2017-01-06 00:31:27

您还可以在Docker容器中使用管道命令,例如bash -c "<command1> | <command2>"

代码语言:javascript
复制
docker run img /bin/bash -c "ls -1 | wc -l"

但是,在不调用远程中的shell的情况下,输出将被重定向到本地终端。

票数 11
EN

Stack Overflow用户

发布于 2020-04-20 18:56:58

如果您正在运行的命令相对简单,则bash -c可以很好地工作。但是,如果您试图运行一长串充满控制字符的命令,情况可能会变得复杂。

我成功地解决了这个问题,方法是将我的命令从外部输入到进程中。

cat script.sh | docker run -i <image> /bin/bash

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28490874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档