我有两个应用程序:
目前,Flask项目带有控制台脚本的副本,并在必要时使用subprocess
运行它。这在Docker容器中运行良好,但它们耦合得太紧。在某些情况下,我希望从命令行运行控制台脚本。
我想将两个应用程序分成不同的容器。为了使这项工作,Flask应用程序需要能够在一个单独的容器(可能在不同的机器上)启动控制台脚本。理想情况下,我不想在Flask容器中运行控制台脚本容器,因此每个容器只运行一个进程。另外,我需要能够传递控制台脚本命令行参数。
问:如何从容器内部生成具有短期任务的容器?
答案 0 :(得分:5)
您可以让容器访问执行docker命令。它要么需要直接访问docker socket,要么需要各种tcp环境变量和文件(客户端证书等)。显然,它也需要在容器上安装docker client。
可以在主机上执行docker命令的容器的简单示例:
docker run -v /var/run/docker.sock:/var/run/docker.sock your_image
重要的是要注意,这与在容器中运行docker守护程序不同。为此,您需要一个像jpetazzo/dind这样的解决方案。