可以看到,Docker-Registry 缺省没有安全权限的设置,任何人都可以 pull 和 push,所以安全和认证由 Docker Index(即 Docker-Hub)处理。
但目前我们没有引入 Docker Index 角色,只是在 Docker Registry 前面架设了一层 Nginx 负责 Basic-Auth 身份认证和 SSL 加密传输,之所以如此是因为2014年10月发布的 Docker 1.3 开始强制 Basic Authentication 而且必须使用 HTTPS 访问 Registry,如下图所示:
也就是说,Jenkins 需要持有用于 Basic Auth 的用户名密码以及 SSL 证书。下面引用 larrycaiyu 的制图来说明 Nginx+Registry 的服务是如何组成的:
0x07 如何保证Marathon API和Docker API调用安全?
我们的持续集成管理平台(Codename:Touchstone)会调用 Marathon REST API 进行容器部署工作,如下图所示。
2014年4月,
Docker 0.10 引入了 TLS auth,内置了 TLS/SSL 证书安全,这样 Docker Remote API 才不再裸奔。目前,我们在 Mesos Slave 宿主机的 Docker Daemon 配置文件 /etc/sysconfig/docker 里启用了 --tlsverify: