我想创建一个使用 docker-py 在 Docker 容器内运行多个命令的过程。阅读文档,我发现我可以在创建容器时使用命令选项。像这样:
c.create_container(image="myimage", command="mycommand")
有没有办法在刚刚创建的容器上运行其他命令?
谢谢!
从 docker 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 脚本作为字符串参数。在这个 shell 脚本中,你可以做任何你想做的事情。
使用 docker-py 或者不使用容器只能启动一个进程。但是,此进程可以是生成多个其他进程的脚本或程序。
查看 Docker 文章,了解如何使用 Docker 监督以在容器中运行多个进程。
我认为使用 docker-py 是不可能的,但是有几种方法可以做到这一点,具体取决于您希望运行的命令。
一种可能性是设置command1 && command2
为命令参数,但第二个将仅在第一个完成时启动(因此,如果它永远不会持续,第二个命令将永远不会启动......)。另一种选择是在容器中运行 bash,然后通过以下语法对其运行命令:
echo your_command | docker attach container_id
从主机的命令行。