Rancher 性能(Docker 在 Docker?)

Rancher Performance (Docker in Docker?)

再看Rancher,性能如何?我想我的主要问题是,docker 中的 Rancher docker 中是否部署了所有内容?阅读 http://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/ 后,我试图远离这个想法。看起来 Docker/Jenkins 的 Rancher CI 管道在 docker 中是 docker,但其余的呢?如果我设置一个 docker-compose 或从他们的目录中部署一些东西,那么 docker 中的所有内容都是 docker 吗?我已经通读了他们的文档,这个简单的问题仍然在我脑海中闪过。任何指导将不胜感激。

谢谢

Rancher 本身未在 Docker 中与 Docker 一起部署 (DinD)。 Rancher的主要组件rancher/server和rancher/agent都是普通的容器。在正常部署中,服务器运行编排部分和目录的一些其他关键服务,Docker Machine 供应,websocket-proxy 和 MySQL。如果需要,所有这些都可以分解,但为了入门简单,它是一体的。我们使用 s6 来管理编排和数据库进程。

rancher/agent 容器具有特权,需要用户绑定挂载主机 Docker 套接字。我们在容器中打包了一个 Docker 二进制文件,并在启动时使用它与主机通信。它类似于 Mac 与 Boot2docker 对话的方式,二进制文件只是一个客户端与远程 Docker 守护进程对话。代理启动后,它会通过 websocket 连接与 Rancher 服务器容器通信。部署容器和堆栈时,Rancher 服务器会向代理发送事件,然后代理调用 hosts Docker 守护进程进行部署。部署的容器是 运行 作为主机上的正常 Docker 容器,就像用户键入 docker run ... 一样。事实上,Rancher 的一个巧妙功能是,如果您在主机上键入 docker run ...,生成的容器将显示在 Rancher UI.

Rancher 目录中的 Jenkins 条目,当使用 Swarm 插件时,也会执行 Docker 套接字的主机绑定挂载。我们有一些早期的实验,使用 DinD 来测试 Jenkins 的一些概念,但这些都没有发布。