我想创建一个使用docker-py在Docker容器内运行多个命令的过程。 阅读该文档,我发现,创造这样的container..something时,我可以使用命令选项:使用docker-py在同一个容器上运行多个命令
c.create_container(image="myimage", command="mycommand")
是否有一种方式来运行刚刚创建的容器上的其它命令?
谢谢!
我想创建一个使用docker-py在Docker容器内运行多个命令的过程。 阅读该文档,我发现,创造这样的container..something时,我可以使用命令选项:使用docker-py在同一个容器上运行多个命令
c.create_container(image="myimage", command="mycommand")
是否有一种方式来运行刚刚创建的容器上的其它命令?
谢谢!
使用docker-py或不是容器只能启动一个进程。然而,这个过程可以是一个脚本或一个产生多个其他进程的程序。
看看how to supervisor with Docker上的Docker文章,在容器中运行多个进程。
我不认为这是可能的使用docker py,但有几种方法可以做到这一点,这取决于你想运行哪个命令。
一种可能性是将command1 && command2
设置为命令参数,但第二个将仅在第一个完成时启动(因此,如果它永远不会持续,第二个命令永远不会启动...)。另一种选择是运行在容器在bash,然后通过语法在其上运行的命令:从主机的命令行
echo your_command | docker attach container_id
。
截至码头v1.3。可以使用docker-exec命令将新进程注入正在运行的容器(请参阅https://docs.docker.com/reference/commandline/cli/#exec)。
但是,您应该考虑运行多进程容器的缺点,即“如果担心会分离”(在许多文章中进行了讨论)。
你可以通过使用命令参数而不是字符串的列表来实现。此外,您需要使用sh -c
以执行命令:
c.create_container(image="myimage", command=['sh','-c','ls | wc && date'])
你还是只运行一个命令(壳),但您提供一个shell脚本经由-c
shell参数字符串参数。在这个shell脚本中,你可以做任何你喜欢的事情。
请参阅docker-exechttps://docs.docker.com/reference/commandline/cli/#exec – 2014-10-18 20:16:01