IDEA远程连接Dcoker部署(附ssl连接加密)

使用ssh工具连接服务器

先在/usr/local目录下创建个文件夹,这里取名叫ca,然后进入ca文件夹中

mkdir -p /usr/local/ca
cd /usr/local/ca

创建一个key ,需要输入密码和确认密码,请记住这个密码

openssl genrsa -aes256 -out ca-key.pem 4096

根据提示分别输入国家,省份,城市,组织,等一系列信息(可以随便输,无所谓的其实)

openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
  • 你可以乱填,或者参考如下的填法
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Hangzhou, Zhejiang Province
Locality Name (eg, city) [Default City]:XIACHENG
Organization Name (eg, company) [Default Company Ltd]:WRETCHANT.COM
Organizational Unit Name (eg, section) []:ONLINE ZUOZUO
Common Name (eg, your name or your server's hostname) []:wracaca

生成server-key.pem,输入下面命令敲回车即可.

openssl genrsa -out server-key.pem 4096

绑定IP或者域名

  • 把下面的$Host换成你自己服务器外网的IP或者域名:比如:openssl req -subj “/CN=192.168.1.0” -sha256…
  • 或:openssl req -subj “/CN=www.xycloud.com” -sha256…(这么做前提是你有域名,该域名DNS解析后指向你的服务器)
openssl req -subj "/CN=$HOST" -sha256 -new -key server-key.pem -out server.csr

配置白名单

  • 接下来要允许哪些ip可以连接到服务器的docker,因为已经是ssl连接,所以我推荐配置0.0.0.0,也就是所有Ip都可以连接(但只有拥有证书的才可以连接成功),这样配置好之后公司其他人也可以使用.如果你不想这样,那你可以配置Ip,用逗号分隔开.下面的$Host依旧是你服务器外网的IP或者域名,请自行替换.(这里如果你使用的是服务器Ip的话,请将前面的DNS换成IP,否则配下来连接还是不会成功,如果你使用的是服务器域名,那么就用DNS就可以了)
echo subjectAltName = DNS:$HOST,IP:0.0.0.0 >> extfile.cnf

生成ca-key

echo extendedKeyUsage = serverAuth >> extfile.cnf

执行下面语句,然后输入前面设置过的密码,用以生成ca-key.

openssl x509 -req -days 365 -sha256 -in server.csr -CA ca.pem -CAkey ca-key.pem \-CAcreateserial -out server-cert.pem -extfile extfile.cnf

生成客户端所需的key.pem,依旧在该服务器下执行下面命令,到时候把生成好的几个公钥私钥拷出去即可.

openssl genrsa -out key.pem 4096

执行下面命令

openssl req -subj '/CN=client' -new -key key.pem -out client.csr
echo extendedKeyUsage = clientAuth >> extfile.cnf

生成cert.pem,需要输入前面设置的密码

openssl x509 -req -days 365 -sha256 -in client.csr -CA ca.pem -CAkey ca-key.pem \-CAcreateserial -out cert.pem -extfile extfile.cnf

修改权限

chmod -v 0400 ca-key.pem key.pem server-key.pem
chmod -v 0444 ca.pem server-cert.pem cert.pem

把证书复制过去

cp server-*.pem  /etc/docker/
cp ca.pem /etc/docker/

修改docker配置:

vi /lib/systemd/system/docker.service
  • 将ExecStart=/usr/bin/dockerd
  • 替换为:
ExecStart=/usr/bin/dockerd --tlsverify --tlscacert=/etc/docker/ca.pem --tlscert=/etc/docker/server-cert.pem --tlskey=/etc/docker/server-key.pem -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock

重启docker

systemctl daemon-reload
systemctl restart-docker

开放2375端口

/sbin/iptables -I INPUT -p tcp --dport 2376 -j ACCEPT
iptables-save

重启docker

service docker restart

查看文件

ll

通过SFTP工具将3个文件下载到本地任何目录

  • 使用IDEA的docker插件进行连接

  • 至此IDEA远程Docker 连接加密就完成了

  • 思考:为什么需要加密?

  • 试想:如果别人知道你的IP,并且知道你对应的端口,即可使用IDEA连接你的Docker进行操作

  • 配置ssl加密后,如果对方没有证书,是无法用过远程连接你的Docker的

IDEA 连接Docker后部署项目

  • 创建一个Dockerfile文件,与项目pom.xml同级目录

  • 选择Edit Configuratinos..

  • 添加Dockerfile 选项

  • 配置镜像与容器

  • Name: 随便起

  • Dockerfile: 选择刚刚创建的Dockerfile

  • image tag: 镜像名称

  • Container name: 容器名称

  • Bind ports: 外部访问端口:容器端口

启动容器

  • 需要查看启动日志
docker run -p 8085:8085 -t 镜像ID --name demo
  • 不查看启动日志
docker run -d -p 8085:8085 -t 镜像ID --name demo
  • 启动成功后即可访问IP:端口
上一篇 下一篇