如何asynchronous运行Docker命令?
当前forms的Docker将所有docker命令放入工作队列中,并按顺序(同步)执行一个。 这意味着,如果您要创build一个合并了Docker命令的单线程API(node.js)(例如站起来容器或下载镜像),它将很快得到备份,并使docker工作队列超载。 我已经得到了很多。 问题是我怎么能重新build模dockerasynchronous处理命令?
我不关心获取有关命令状态的更新,甚至无法提供关于何时完成的callback函数。 我的主要目标是能够快速调用docker来站立或执行大量的命令,而不会影响API的响应时间。
有些想法 –
- 使用更多虚拟机进行横向扩展
不能有效利用每个虚拟机。 昂贵。 不雅的解决scheme。
- 在可用的守护进程中初始化更多的docker守护进程和平衡任务。
仍然不是真正的asynchronous。 此外,各种docker守护程序无法共享资源,如图像。 所以,如果你有10个docker守护进程需要运行一个Ubuntu容器,那么你将需要10个独立的ubuntu镜像,这个镜像将占用原来ubuntu镜像大小的10倍。
- asynchronousDocker客户端 – https://github.com/tulayang/asyncdocker即使在NIM docker容器上,我也无法启动和运行。 另外它是用NIM编写的。 也不完全清楚,这就是我正在寻找,或者只是在docker内引用asynchronoushttp请求。
你需要看看以下几点:
-
registry:可以将Dockerregistry映像configuration为caching代理。 您的docker守护程序将被configuration为使用此caching代理registry进行映像引用。 只有第一个镜像才能从dockerhub下载,镜像将被本地caching,所以请求相同镜像的第二个docker守护进程几乎可以立即执行。 您可以使用
docker pull registry
来获取库(官方)图像。 -
Docker Swarm:您正在讨论初始化更多Docker守护进程和平衡任务,这已经在使用Docker Swarm和它提供的集成覆盖networking完成了。
-
Kubernetes:Docker Swarm的另一种select,具有更多的function和灵活性(也是复杂性)