...,以便两个容器都在同一主机上运行,但是在容器内没有容器?
长版
我制作了两个名为scheduler
和worker
的python程序。调度程序会定期询问服务器是否有task
要做。如果即将到来的task
,scheduler
将下载输入数据,并以下载的数据开始worker
。我现在正在考虑将这两个程序容器化。我需要的包括:
Dockerfile
。有一种简单的方法吗?
答案 0 :(得分:0)
您可以,但您信任的是对主机具有不受限制的主机根访问权限的容器。
启动要启动其他容器的容器时,通常需要使用以下方式绑定安装主机的Docker套接字
docker run -v /var/run/docker.sock:/var/run/docker.sock ...
Dockerfile应该安装标准的Docker CLI(或任何其他特定于语言的Docker API),然后当它进行docker
调用时,它将像您从主机运行相同的Docker命令一样正常工作。特别是,这意味着容器中的任何docker run -v
选项都使用 host的文件系统路径。这也意味着该容器可以启动子容器,以访问主机上的 any 文件,即使在/etc
之类的系统目录中,也可以自由检查正在运行的任何其他Docker容器的详细信息。
在您描述的体系结构中,更安全的方法是将“计划程序”和“工人”部件组合到一个容器中。它会定期轮询服务器,如果有工作要做,它会进行轮询。如果您想一次执行更多工作,则可以启动此容器的多个副本。这也使您可以轻松地限制一次同时执行的并行工作量,因此,您不必尝试撤消无法在4核系统上一次运行的一千个工作。