我想使用docker-py创建一个在Docker容器中运行多个命令的过程。 阅读文档后,我发现在创建容器时我可以使用命令选项。这样的事情:
c.create_container(image="myimage", command="mycommand")
有没有办法在刚刚创建的容器上运行其他命令?
谢谢!
答案 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
来自主机的命令行。