4

我想创建一个使用 docker-py 在 Docker 容器内运行多个命令的过程。阅读文档,我发现我可以在创建容器时使用命令选项。像这样:

c.create_container(image="myimage", command="mycommand")

有没有办法在刚刚创建的容器上运行其他命令?

谢谢!

4

4 回答 4

2

从 docker v1.3 开始。可以使用 docker-exec 命令将新进程注入正在运行的容器中(请参阅https://docs.docker.com/reference/commandline/cli/#exec)。

但是,您应该考虑运行多进程容器的缺点,即“关注点分离”(在许多在线文章中都有讨论)。

于 2014-10-18T20:14:34.623 回答
2

您可以通过使用命令参数列表而不是字符串来做到这一点。此外,您需要使用sh -c来执行您的命令:

c.create_container(image="myimage", command=['sh','-c','ls | wc && date'])

您仍然只运行一个命令(shell),但您通过-cshell 参数提供了一个 shell 脚本作为字符串参数。在这个 shell 脚本中,你可以做任何你想做的事情。

于 2016-06-23T17:29:18.920 回答
0

使用 docker-py 或者不使用容器只能启动一个进程。但是,此进程可以是生成多个其他进程的脚本或程序。

查看 Docker 文章,了解如何使用 Docker 监督以在容器中运行多个进程。

于 2014-10-16T19:48:37.677 回答
0

我认为使用 docker-py 是不可能的,但是有几种方法可以做到这一点,具体取决于您希望运行的命令。

一种可能性是设置command1 && command2为命令参数,但第二个将仅在第一个完成时启动(因此,如果它永远不会持续,第二个命令将永远不会启动......)。另一种选择是在容器中运行 bash,然后通过以下语法对其运行命令:

echo your_command | docker attach container_id

从主机的命令行。

于 2014-10-17T08:06:47.057 回答