代码之家  ›  专栏  ›  技术社区  ›  duong_dajgja

是否可以从Docker容器启动Docker容器?

  •  0
  • duong_dajgja  · 技术社区  · 6 年前

    ... 这样两个容器 两者都在同一主机上运行 但是 容器内无容器

    长版本

    我制作了两个名为 scheduler worker . 调度器会定期询问服务器是否存在任何问题 task 去做。如果很快会有一些 任务 这个 调度程序 将下载输入数据并启动 工人

    • 制作 Dockerfile 这是两个集装箱的价格。
    • 两个容器应该共享一个用于下载/使用输入数据的公共卷(当然属于主机)。
    • 调度器容器应该能够启动辅助容器,以便辅助容器将在主机环境中运行,而不是在调度器容器中运行。

    有没有一个简单的方法?

    1 回复  |  直到 6 年前
        1
  •  0
  •   David Maze    6 年前

    你可以, 但是,您信任的容器在主机上具有不受限制的根访问权限 .

    当您启动想要启动其他容器的容器时,您需要绑定挂载主机的Docker套接字,通常使用

    docker run -v /var/run/docker.sock:/var/run/docker.sock ...
    

    Dockerfile应安装标准Docker CLI(或任何其他特定于语言的Docker API),然后在 docker 调用它将完全像从主机运行相同的Docker命令一样工作。特别是,这意味着 docker run -v 主持人的 文件系统路径。它还意味着容器可以启动子容器访问 任何 主机上的文件,甚至在系统目录中,如 /etc ,并可以自由检查正在运行的任何其他Docker容器的详细信息。

    在您描述的体系结构中,更安全的方法是将“调度器”和“工作者”部分组合到一个容器中。它定期轮询服务器,如果有工作要做,就进行轮询。如果要同时执行更多工作,可以启动此容器的多个副本。这还可以让您轻松地限制一次执行的并行工作的数量,这样您就不会试图在4核系统上同时运行上千个作业。