1

Looking at Rancher, what is the performance like? I guess my main question, is everything deployed in Rancher docker in docker? After reading http://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/ I trying to stay away from that idea. It looks like the Rancher CI pipeline with Docker/Jenkins is docker in docker, but what about the rest? If i setup a docker-compose or deploy something from their catalog, is it all docker in docker? I've read through their documentation and this simple question has still just flown over my head. Any guidance would be much appreciated.

Thank you

4

1 回答 1

6

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

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

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

于 2016-02-03T16:17:13.700 回答