使用docker-py在同一容器上运行多个命令

时间:2014-10-16 16:56:49

标签: docker dockerpy

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

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

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

谢谢!

4 个答案:

答案 0 :(得分:1)

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

但是,您应该考虑运行多进程容器的缺点,“如果担心则分离”(在许多在线文章中讨论过)。

答案 1 :(得分:1)

您可以使用命令参数的列表而不是字符串来执行此操作。此外,您需要使用sh -c来执行命令:

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

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

答案 2 :(得分:0)

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

查看how to supervisor with Docker上的Docker文章,在容器中运行多个进程。

答案 3 :(得分:0)

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

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

echo your_command | docker attach container_id

来自主机的命令行。