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。