Docker – 从容器中运行容器
我有两个应用程序:
- 执行简短(ish)任务并退出的Python控制台脚本
- 通过传递命令行参数来启动控制台应用程序的Flask“frontend”
目前,Flask项目携带一个控制台脚本的副本,并在必要时使用subprocess
运行它。 这在Docker容器中工作良好,但它们耦合得太紧密。 有些情况下我想从命令行运行控制台脚本。
我想将这两个应用程序分离到不同的容器中。 为了使这个工作,Flask应用程序需要能够在一个单独的容器(可能在不同的机器上)启动控制台脚本。 理想情况下,我想不必在Flask容器内运行控制台脚本容器,以便每个容器只运行一个进程。 另外我需要能够通过控制台脚本命令行参数。
问:我怎样才能从容器内产生一个短期任务的容器?
你可以给容器访问权限来执行docker命令。 它要么需要直接访问docker套接字,要么需要各种tcp环境variables和文件(客户端证书等)。 显然它需要在容器上安装docker客户端 。
一个容器的简单例子,可以在主机上执行docker命令:
docker run -v /var/run/docker.sock:/var/run/docker.sock your_image
请注意,这与在容器中运行docker守护程序不同。 为此你需要像jpetazzo / dind这样的解决scheme。