我的主机上有运行容器的docker。我想知道从运行中的容器中“触发”容器创建的可能性和最佳方法是什么。
假设我的计算机是主机,并且我有一个名为 app 的容器(ID为 123456789 )在主机上运行。
root@host $ docker contain ls
123456789 app_mage .... app
我想在应用
中的主机上创建一个容器root@123456789 $ docker run --name app2 ...
root@host docker container ls
123456789 app_mage .... app
12345678A app_mage .... app2
我需要让我的 app 在docker上运行并在隔离的环境中运行任意应用程序(但我宁愿避免docker-in-docker)
答案 0 :(得分:2)
大多数Docker社区将逐渐远离这些类型的设计,但是这是非常可行的。
类似于Starting and stopping docker container from other container,您可以简单地将docker.sock文件从主机安装到容器中,赋予它访问docker守护程序的特权。
要使事情更加自动化,您可以使用docker-py sdk从容器内部启动容器,这将反过来在托管您要从中产生更多容器的容器的主机上访问Docker守护进程。 / p>
例如:
docker run -v /var/run/docker.sock:/var/run/docker.sock image1 --name test1
----
import docker
def create_container():
docker.from_env().containers.run("image2", name="test2")
此示例启动容器test1,并在新创建的容器内运行该方法,而容器又在与test1相同的主机上运行一个新的容器test2。