为Docker启用远程访问及设置tls支持
环境说明
操作系统: centos7
docker: Docker version 17.09.0
启用远程连接-非安全连接
1 | vi /lib/systemd/system/docker.service |
启用远程连接-安全连接
需要准备tls证书文件,并放置在/opt/docker(该目录自定义),包含服务端证书及客户端证书1
2
3vi /lib/systemd/system/docker.service
#修改ExecStart=/usr/bin/dockerd所在行为
ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/opt/docker/ca-cert.pem --tlscert=/opt/docker/server-cert.pem --tlskey=/opt/docker/server-key.pem -H=tcp://0.0.0.0:2376 -H unix:///var/run/docker.sock
重载配置并重启服务
1 | systemctl daemon-reload |
使用客户端测试连通性
1 | #更改[host]为实际的地址(tls证书中允许访问的CN,DNS等) |
可能输出结果
Client:
Version: 17.09.0-ce
API version: 1.32
Go version: go1.8.3
Git commit: afdb6d4
Built: Tue Sep 26 22:41:23 2017
OS/Arch: linux/amd64
Server:
Version: 17.09.0-ce
API version: 1.32 (minimum version 1.12)
Go version: go1.8.3
Git commit: afdb6d4
Built: Tue Sep 26 22:42:49 2017
OS/Arch: linux/amd64
Experimental: false
额外说明
可以在将客户端证书放置在~/.docker目录下1
2#该命令仅作原理
cp -cv /opt/docker/{ca-cert,client-cert,client-key}.pem ~/.docker/{ca,cert,key}.pem
现在通过–tlsverify就能连接到开启远端访问的Docker实例1
2#更改[host]为实际的地址(tls证书中允许访问的CN,DNS等)
docker --tlsverify -H tcp://[host]:2376 version
它会自动使用~/.docker下的证书来验证连接