【问题标题】:Executing bash then running commands in docker执行 bash 然后在 docker 中运行命令
【发布时间】:2017-07-10 06:52:28
【问题描述】:

您可以使用 docker 容器在 docker 容器中执行 bash shell

sudo docker exec -it container bash

但我想要一个在容器中执行 bash shell,然后在 bash 提示符下执行更多命令的命令。

这样的命令目前有效:

sudo docker exec -it container touch test.txt | bash

但是,我想在 bash 提示符下运行的命令只能在 docker 容器中使用,所以我得到一个错误:

No such file or directory

是否可以使用 docker exec 执行 docker 容器本地的命令?

【问题讨论】:

  • 命令bash是容器的bash。如果您的容器没有 bash,这实际上可能会失败(参见图像 alpine)。因此,如果您的容器有类似git 的命令,您可以执行docker exec -it container git clone https://somegitdocs
  • 您要运行什么命令。通过 docker exec 执行的每个命令都在容器内。
  • 命令是指 bash 脚本吗?就像你想做bash myscript.sh一样?如果是这样,您需要了解容器的工作目录(可以通过WORKDIR 设置)。您可以通过在容器中运行 pwd 来找到它。

标签: bash shell docker


【解决方案1】:

试试这样的:

sudo docker exec -it container bash -c "touch test.txt ; <another command>"

【讨论】:

  • 嗯?您正在尝试将touch 中的管道 导入另一个命令?这没有任何意义——touch 不会在标准输出上发出任何东西,所以没有什么可以管道。
  • 也许你想要; 而不是|
【解决方案2】:

我想我应该多阅读 docker 文档!

docker exec -it container mycommand

工作正常!出于某种原因,我认为我必须启动一个 bash 提示然后使用其他命令,这是我的错误。

感谢 jrbeverly 和 user2105103 解释“通过 docker exec 执行的每个命令都在容器内。”

如果有人好奇如何在容器中运行多个命令,我正在使用:

sudo docker exec -it container sh -c "com1 && com2 && com3"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-17
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    • 2011-11-03
    • 2015-05-18
    相关资源
    最近更新 更多