Docker 开放端口后,只要知道 IP 和端口号就可以随意管理镜像和容器,这样的安全性很差。在生成环境中,建议使用证书来安全地连接和管理 Docker。
生成证书文件
注意: 一定需要切换到 root 用户执行以下步骤。
-
创建脚本
新建脚本
a.sh
,将以下内容复制到脚本中。记得修改 IP 地址和密码(随便填写一个,不要使用中文),以及目录dir
为/root/docker
。#!/bin/sh ip=服务器ip password=证书密码 dir=/root/docker if [ ! -d "$dir" ]; then echo "" echo "$dir 不存在,将创建" echo "" mkdir -p $dir else echo "" echo "$dir 已存在,将删除并重新创建" echo "" rm -rf $dir mkdir -p $dir fi cd $dir # 创建根证书RSA私钥 openssl genrsa -aes256 -passout pass:$password -out ca-key.pem 4096 # 创建CA证书 openssl req -new -x509 -days 365 -key ca-key.pem -passin pass:$password -sha256 -out ca.pem -subj "/C=NL/ST=./L=./O=./CN=$ip" # 创建服务端私钥 openssl genrsa -out server-key.pem 4096 # 创建服务端签名请求证书文件 openssl req -subj "/CN=$ip" -sha256 -new -key server-key.pem -out server.csr echo subjectAltName = IP:$ip,IP:0.0.0.0 >> extfile.cnf echo extendedKeyUsage = serverAuth >> extfile.cnf # 创建签名生效的服务端证书文件 openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$password" -CAcreateserial -out server-cert.pem -extfile extfile.cnf # 创建客户端私钥 openssl genrsa -out key.pem 4096 # 创建客户端签名请求证书文件 openssl req -subj '/CN=client' -new -key key.pem -out client.csr echo extendedKeyUsage = clientAuth >> extfile.cnf echo extendedKeyUsage = clientAuth > extfile-client.cnf # 创建签名生效的客户端证书文件 openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$password" -CAcreateserial -out cert.pem -extfile extfile-client.cnf # 删除多余文件 rm -f -v client.csr server.csr extfile.cnf extfile-client.cnf chmod -v 0400 ca-key.pem key.pem server-key.pem chmod -v 0444 ca.pem server-cert.pem cert.pem
-
赋予脚本执行权限
chmod 777 a.sh
-
执行脚本
sh a.sh
-
配置 Docker
修改
/etc/docker/daemon.json
文件,将以下配置添加到文件中:{ "tls": true, "tlsverify": true, "tlscacert": "/root/docker/ca.pem", "tlscert": "/root/docker/server-cert.pem", "tlskey": "/root/docker/server-key.pem" }
-
重启 Docker
systemctl daemon-reload systemctl restart docker
其他服务器系统用户的操作:
snap restart docker
-
将证书文件复制到 Windows
将
/root/docker
目录下的证书文件夹复制到 Windows 机器上。
IntelliJ IDEA 连接 Docker
-
配置 Docker 连接
在 IntelliJ IDEA 中,进入 Docker 配置,设置 Docker 的 IP 和端口,协议选择
https
。在证书设置中,选择复制到 Windows 上的证书文件夹(注意是直接包含证书文件的文件夹)。 -
如果连接不成功
如果配置正确但仍然无法连接,请尝试关闭 IntelliJ IDEA 后重新打开。