当前位置:   article > 正文

04. Idea集成Docker_idea连接docker

idea连接docker

目录

1、前言

2、开启docker远程

2.1、配置远程访问模式

2.2、重启docker服务

2.3、验证

3、Idea配置Docker

3.1、配置证书登录

4、创建Dockerfile

4.1、编写Dockerfile

4.2、配置启动项

4.3、访问接口


1、前言

上一节中,我们介绍了Dockerfile的方式构建自己的镜像。但是在实际开发过程中,一般都会和开发工具直接集成,如Idea。今天就介绍下idea和Docker如何集成。

2、开启docker远程

要集成之前,需要我们本机能够访问docker服务,也就是我们的docker服务需要开启远程模式。

2.1、配置远程访问模式

vi /usr/lib/systemd/system/docker.service

添加-H tcp://0.0.0.0:2375即可。

  • -H:即添加host。
  • tcp:表示tcp协议连接。
  • 0.0.0.0: 表示不限制远程访问ip。
  • 2375:表示远程访问端口。

添加后如下图所示:

2.2、重启docker服务

注意,如果防火墙有设置端口,这里需要开放2375端口。

  1. systemctl daemon-reload
  2. systemctl restart docker

2.3、验证

重启服务后,可以直接浏览器访问http://ip:2375/version。如果能够成功访问到信息,则说明远程配置成功。

0

3、Idea配置Docker

打开idea的设置,File -> Settings -> Build, Execution, Deployment -> Docker。

0

在Connect to Docker daemon with:选择TCP socket。并在Engine API URL输入tcp://ip:2375,ip即我们docker的ip。

0

输入后,下方显示Connection successful,即说明连接成功。

0

3.1、配置证书登录

上面介绍的方式是直接开放tcp端口登录,但是这样回存在安全问题。实际项目中,我们一般还要加上证书的认证。

1)先配置docker.service。

vim /usr/lib/systemd/system/docker.service

ExecStart后面追加配置,/etc/docker/certs为生成证书的路径,2375为docker开启的远程端口:

--tlsverify --tlscacert=/etc/docker/certs/ca.pem --tlscert=/etc/docker/certs/server-cert.pem --tlskey=/etc/docker/certs/server-key.pem -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

2)接着生成认证证书。

生成证书脚本create_cert.sh,全局替换下公网IP,证书密码:

  1. cker TLS 证书
  2. #!/bin/bash
  3. #相关配置信息
  4. SERVER="${公网IP}"
  5. PASSWORD="${证书密码}"
  6. COUNTRY="CN"
  7. STATE="qqq"
  8. CITY="xxx"
  9. ORGANIZATION="sssss"
  10. ORGANIZATIONAL_UNIT="product"
  11. EMAIL="sasdasd"
  12. ###开始生成文件###
  13. echo "开始生成文件"
  14. mkdir -pv /etc/docker/certs
  15. #切换到生产密钥的目录
  16. cd /etc/docker/certs
  17. #生成ca私钥(使用aes256加密)
  18. openssl genrsa -aes256 -passout pass:$PASSWORD -out ca-key.pem 4096
  19. #生成ca证书,填写配置信息
  20. openssl req -new -x509 -passin "pass:$PASSWORD" -days 3650 -key ca-key.pem -sha256 -out ca.pem -subj "/C=$COUNTRY/ST=$STATE/L=$CITY/O=$ORGANIZATION/OU=$ORGANIZATIONAL_UNIT/CN=$SERVER/emailAddress=$EMAIL"
  21. #生成server证书私钥文件
  22. openssl genrsa -out server-key.pem 4096
  23. #生成server证书请求文件
  24. openssl req -subj "/CN=$SERVER" -new -key server-key.pem -out server.csr
  25. sh -c 'echo subjectAltName = IP:0.0.0.0,IP:${公网IP},IP:127.0.0.1 >> extfile.cnf'
  26. sh -c 'echo extendedKeyUsage = serverAuth >> extfile.cnf'
  27. #使用CA证书及CA密钥以及上面的server证书请求文件进行签发,生成server自签证书
  28. openssl x509 -req -days 3650 -in server.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$PASSWORD" -CAcreateserial -out server-cert.pem -extfile extfile.cnf
  29. #生成client证书RSA私钥文件
  30. openssl genrsa -out key.pem 4096
  31. #生成client证书请求文件
  32. openssl req -subj '/CN=${公网IP}' -new -key key.pem -out client.csr
  33. sh -c 'echo "extendedKeyUsage=clientAuth" > extfile-client.cnf'
  34. #生成client自签证书(根据上面的client私钥文件、client证书请求文件生成)
  35. openssl x509 -req -days 3650 -in client.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$PASSWORD" -CAcreateserial -out cert.pem -extfile extfile-client.cnf
  36. #更改密钥权限
  37. chmod 0400 ca-key.pem key.pem server-key.pem
  38. #更改密钥权限
  39. chmod 0444 ca.pem server-cert.pem cert.pem
  40. #删除无用文件
  41. rm client.csr server.csr
  42. echo "生成文件完成"
  43. ###生成结束###

直接执行该脚本:

sh create_cert.sh

执行成功后,在/etc/docker/certs可以看到我们生成的证书。

0

3)重启docker。

  1. systemctl daemon-reload
  2. systemctl restart docker

4)将certs整个复制到本地。打开Idea的Docker设置,Certificates folder选择我们存放的cert目录即可。

0

可以看到显示Cnnection successful,表示连接成功。

4、创建Dockerfile

我们继续使用上一篇的dockerfile-springboot工程,在该工程下添加Dockerfile文件。

0

启动类:

  1. @RestController
  2. @RequestMapping("demo")
  3. public class TestController {
  4. @GetMapping("index")
  5. public String indexAction(){
  6. return "this is idea with dockerfile create springboot application";
  7. }
  8. }

我们需要使用Dockerfile构建我们的镜像到我们的Docker服务上,并运行该程序,最终访问接口打印“this is idea with dockerfile create springboot application”。

4.1、编写Dockerfile

  1. # 指定基础镜像作为该容器的基础环境,如springboot应用最起码得有jdk环境
  2. FROM openjdk:8
  3. # 执行维护者的信息
  4. MAINTAINER shamee csdn peng793049488
  5. # 创建一个存放该工程的目录
  6. RUN mkdir -p /data/project
  7. ADD target/dockerfile-springboot-1.0-SNAPSHOT.jar /data/project/dockerfile-springboot-1.0-SNAPSHOT.jar
  8. # 对外暴露一个8899端口
  9. EXPOSE 8899
  10. # 执行启动
  11. ENTRYPOINT ["/bin/sh", "-c", "java -jar /data/project/dockerfile-springboot-1.0-SNAPSHOT.jar"]

4.2、配置启动项

选择Dockerfile的方式。

在(1)的位置选择我们的Dockerfile文件,

在(2)的位置填写我们的镜像名称,

在(3)的位置是我们容器的名称,

在(4)的位置填写我们的端口映射,前面的是暴露宿主机端口,后面的是容器端口。

配置完后,直接运行,观察控制台输出日志信息。

同时,控制台的左侧已经有了我们刚构建的镜像和容器:

选择容器/dockerfile-demo右键,start container,启动容器。

4.3、访问接口

由于我们映射出来的端口为8899,所以我们访问http://ip:8899/demo/index。

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/104669
推荐阅读
相关标签
  

闽ICP备14008679号