使用 TLS 认证远程访问 Docker 已翻译 100%

oschina 投递于 2014/05/18 06:48 (共 3 段, 翻译完成于 05-18)
阅读 9115
收藏 39
2
加载中

通常情况下Docker只在 UNIX socket下生效. 一般只有本地调用生效. 如果要远程调用可以有以下三种方式:

  1. 使用nginx转发通讯到Docker

  2. 用SSH和socat处理链路

  3. 创建Docker daemon监听开放的端口

第一种实现起来比较繁琐. 第二种需要在客户端服务端安装 socat. 由于其连接未加密,任何人都可以拦截Docker的通讯信息.

直到有了 Docker implemented TLS auth in 0.10才完美的解决了这个问题.

有三种简单的方式来实现:

I. 生成证书

需要生成三种证书类型:

  • CA 证书用来生成客户端和服务端证书

  • 远端Docker使用的客户端生疏

  • 服务端使用的Docker daemon证书

我用Ruby写了生成这三种证书的代码.你只需要拷贝相关的代码 clone this repository 并运行下面的命令:

$ gem install certificate_authority
$ ruby certgen.rb example.com
CA certificates are in ~/.docker/ca
Client certificates are in ~/.docker
Server certificates are in ~/.docker/example.com

证书都生成在~/.dockerpath下.

petert
petert
翻译于 2014/05/18 09:39
1

II. 拷贝服务端证书到远端

脚本生成 Docker daemon需要的键值和证书~/.docker/example.com(example.com 是你的域名).

在服务端拷贝到~/.dockerdirectory下:

rsync -ave ssh ~/.docker/example.com/ root@example.com:~/.docker/

III. 在远端配置Docker

Docker daemon在0.10后支持--tlsverify 来提供加密的远端连接

假设你是用的是 Ubuntu 12.04 LTS并已经安装了Docker .其它环境下可能有些不同.

只需要在/etc/default/docker加入下面配置:

DOCKER_OPTS="--tlsverify -H=unix:///var/run/docker.sock -H=0.0.0.0:4243 --tlscacert=/root/.docker/ca.pem --tlscert=/root/.docker/cert.pem --tlskey=/root/.docker/key.pem"

之后重启 Docker daemon:

service docker restart

如果有错Docker daemon就会启动不了. 可以通过 under/var/log/upstart/docker.log来调试.

petert
petert
翻译于 2014/05/18 09:48
1

就是这么简单!

现在通过--tlsverify就能连接到远端Docker实例了:

docker --tlsverify -H tcp://example.com:4243 images

它会使用  ~/.docker下的证书来验证连接. 如果使用的是其他的类型, 可以通过--tls* 来查询docker --help的帮助文档 documentation.

官方的TLS创建网址在这里 can be found on Docker site.

petert
petert
翻译于 2014/05/18 09:51
1
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
加载中

评论(6)

Carvendy
Carvendy
centos 呢?
麦地兜兜
麦地兜兜
纠正: 上面说的是第III节.
麦地兜兜
麦地兜兜
第II节最后一行的路径应该是: /var/log/upstart/docker.log

不看原文真的要死人, 能严谨点么
麦地兜兜
麦地兜兜
@红薯 有没有纠错的功能. 这么下去翻译质量越来越糟糕了.
麦地兜兜
麦地兜兜
看翻译真的误导人, 第I接最后一行

[证书都生成在~/.dockerpath下.] 路径应该是 ~/.docker
NeoYoung
NeoYoung
Docker为什么一下就这么火了~~
返回顶部
顶部