Docker
本身提供了加密的远程管理端口2376
,配合CA
证书,就能提供TLS
连接了
生成需要的证书文件
注意设置好自己的目录
openssl genrsa -out ca-key.pem 4096
证书的相关信息,设置自己的
openssl req -x509 -sha256 -batch -subj '/C=CN/ST=Shanghai/L=Shanghai/O=Ghostcloud Co.,Ltd/OU=Laboratory/CN=www.XXX.cn' -new -days 365 -key ca-key.pem -out ca.pem
openssl genrsa -out server-key.pem 4096
openssl req -subj '/CN=DockerDaemon' -sha256 -new -key server-key.pem -out server-csr.pem
配置上可以访问的ip
地址,网上有说配置0.0.0.0
的, 但是测试失败了,肯定有办法,要不都设置上… ,有知道的麻烦告知下…
echo subjectAltName = IP:127.0.0.1,IP:10.111.30.22,IP:10.111.30.21,IP:10.111.30.24,IP:10.111.30.25,IP:10.111.30.26 ,IP:10.111.30.23 > allow.list
openssl x509 -req -days 365 -sha256 -in server-csr.pem -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem -extfile allow.list
openssl genrsa -out client-key.pem 4096
openssl req -subj '/CN=DockerClient' -new -key client-key.pem -out client-csr.pem
echo extendedKeyUsage = clientAuth > options.list
openssl x509 -req -days 365 -sha256 -in client-csr.pem -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out client-cert.pem -extfile options.list
以上需要的文件都生成完毕!
修改docker配置
修改 docker.service
文件
vim /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/data/docker/tsl/ca.pem --tlscert=/data/docker/tsl/server-cert.pem --tlskey=/data/docker/tsl/server-key.pem -H=0.0.0.0:2376 -H unix://var/run/docker.sock
重启docker
systemctl daemon-reload 守护进程
systemctl restart docker 重启服务
systemctl status docker -l 查看状态
连接
docker --tlsverify --tlscacert=ca.pem --tlscert=client-cert.pem --tlskey=client-key.pem -H=tcp://127.0.0.1:2376 info
通过Portainer连接,选择对应的文件即可
文件大部分命令来自: