Docker开启远程访问(加密)(idea连接Docker实现一键部署)
Docker开启远程访问(加密)(idea连接Docker实现一键部署)
·
Docker开启远程访问(加密)(idea连接Docker实现一键部署)
- 一、准备工作
- 二、开启远程访问(加密)
- 1.先在/usr/local目录下创建个文件夹,这里取名叫ca,然后进入ca文件夹中
- 2.执行下面的命令,需要输入密码,自由指定,两次输入保持一致并记住即可.
- 3.根据提示分别输入国家,省份,城市,组织,等一系列信息(可以随便输,无所谓的其实)
- 4.生成server-key.pem,输入下面命令敲回车即可.
- 5.把下面的$Host换成你自己服务器外网的IP或者域名:比如:openssl req -subj "/CN=192.168.1.0" -sha256...
- 6.配置白名单,也就是你接下来要允许那些ip可以连接到服务器的docker,因为已经是ssl连接,所以我推荐配置0.0.0.0,也就是所有Ip都可以连接(但只有拥有证书的才可以连接成功),这样配置好之后公司其他人也可以使用.如果你不想这样,那你可以配置Ip,用逗号分隔开.下面的$Host依旧是你服务器外网的IP或者域名,请自行替换.
- 7.执行下面语句:
- 8.执行下面语句,然后输入前面设置过的密码,用以生成ca-key.
- 9.生成客户端所需的key.pem,依旧在该服务器下执行下面命令,到时候把生成好的几个公钥私钥拷出去即可.
- 10.生成cert.pem,需要输入前面设置的密码:
- 11.修改权限:
- 12.归集服务器证书:
- 13.修改docker配置:
- 14.重新加载daemon并重启docker
- 15.开放2376端口(有些服务器需要在控制台配置安全组策略)(或者关闭防火墙)
- 16.重启docker
- 17.然后使用工具比如winscp,或者xshell,把你当前所在的/usr/local/ca文件夹里的拷贝到你本地电脑的某个文件夹里
- 18.打开IDEA测试一下,选择ca文件夹,端口号为2376
- 三、idea远程连接docker
一、准备工作
服务器上安装好docker,未安装的请跳转到docker安装教程
PS:个人不建议Idea一键部署,打成镜像耗时太长,完全没有自己将包放入服务器启动来的快。如有更好的方法,欢迎留言讨论。
二、开启远程访问(加密)
官网的远程访问配置所有人都能连接,不安全。
官网配置允许所有人都可以访问的,因为docker默认是root权限的,你把2375端口暴露在外面,意味着别人随时都可以提取到你服务器的root权限,是很容易被黑客黑的,因此,docker官方推荐使用加密的tcp连接,以Https的方式与客户端建立连接,由于网上搜来的以及官网上面的配置有很多地方比较难懂,稍有不慎,配下来就不能成功连接,所以这里再贴一下docker ca认证的配置方法.
1.先在/usr/local目录下创建个文件夹,这里取名叫ca,然后进入ca文件夹中
mkdir -p /usr/local/ca
cd /usr/local/ca
2.执行下面的命令,需要输入密码,自由指定,两次输入保持一致并记住即可.
openssl genrsa -aes256 -out ca-key.pem 4096
3.根据提示分别输入国家,省份,城市,组织,等一系列信息(可以随便输,无所谓的其实)
openssl req -new -x509 -days 365 -key ca-key.pem -sha256 -out ca.pem
4.生成server-key.pem,输入下面命令敲回车即可.
openssl genrsa -out server-key.pem 4096
5.把下面的$Host换成你自己服务器外网的IP或者域名:比如:openssl req -subj “/CN=192.168.1.0” -sha256…
openssl req -subj "/CN=$HOST" -sha256 -new -key server-key.pem -out server.csr
6.配置白名单,也就是你接下来要允许那些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
7.执行下面语句:
echo extendedKeyUsage = serverAuth >> extfile.cnf
8.执行下面语句,然后输入前面设置过的密码,用以生成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
9.生成客户端所需的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
10.生成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
rm -v client.csr server.csr
11.修改权限:
chmod -v 0400 ca-key.pem key.pem server-key.pem
chmod -v 0444 ca.pem server-cert.pem cert.pem
12.归集服务器证书:
cp server-*.pem /etc/docker/
cp ca.pem /etc/docker/
13.修改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:2376 -H unix:///var/run/docker.sock
14.重新加载daemon并重启docker
systemctl daemon-reload
systemctl restart docker
15.开放2376端口(有些服务器需要在控制台配置安全组策略)(或者关闭防火墙)
/sbin/iptables -I INPUT -p tcp --dport 2376 -j ACCEPT
iptables-save
16.重启docker
service docker restart
17.然后使用工具比如winscp,或者xshell,把你当前所在的/usr/local/ca文件夹里的拷贝到你本地电脑的某个文件夹里
18.打开IDEA测试一下,选择ca文件夹,端口号为2376
三、idea远程连接docker
1.idea设置中下载docker插件,重启idea
2.File->settings->Build…->Docker->点击+号->选中TCP socket->
3.连接完成后可以在IDEA左下角找到Docker:(没找到的点击左下角的Services,里面有docker)
4.点击上图左上角的播放按钮或者双击,即可连接到服务器的docker
5.服务器上下载好java镜像
docker pull java:8
docker images
如果是arm64/aarch64系统内核无法使用该java环境
Docker自定义java镜像(解决java:8镜像不支持arm64/aarch64的问题)
6.创建镜像和容器并启动容器:
(1)先把项目打成jar包,
(2)在项目下新建Dockerfile(推荐在项目顶层文件夹下新建,不要放在别处,否则可能创建镜像失败):
FROM java:8
ADD eVoucher-starter/target/eVoucher.jar shiwei-app.jar
EXPOSE 11000
ENTRYPOINT ["java", "-jar", "shiwei-app.jar"]
7.配置docker一键部署
点击Run->Run->Edit Configurations->点击+号->选择Docker->Dockerfile->然后按下图所示填写信息,填完点ok即可.
8.点击启动按钮,根据刚刚的配置自动创建镜像,并用镜像创建容器启动
更多推荐
已为社区贡献2条内容
所有评论(0)