Idea集成Docker

news2025/2/21 21:55:45

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端口。

systemctl daemon-reload 
systemctl restart docker 

2.3、验证

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

3、Idea配置Docker

打开idea的设置,File -> Settings -> Build, Execution, Deployment -> Docker
在Connect to Docker daemon with:选择TCP socket。并在Engine API URL输入tcp://ip:2375,ip即我们虚拟机中ip。
输入后,下方显示Connection successful,即说明连接成功。
在这里插入图片描述

3.1、配置证书登录

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

  1. 先配置docker.service
vi /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
  1. 接着生成认证证书。
    生成证书脚本create_cert.sh,全局替换下公网IP,证书密码:
cker TLS 证书
#!/bin/bash
 
#相关配置信息
SERVER="${公网IP}"
PASSWORD="${证书密码}"
COUNTRY="CN"
STATE="qqq"
CITY="xxx"
ORGANIZATION="sssss"
ORGANIZATIONAL_UNIT="product"
EMAIL="sasdasd"
 
###开始生成文件###
echo "开始生成文件"
 
mkdir -pv /etc/docker/certs
 
#切换到生产密钥的目录
cd /etc/docker/certs 
#生成ca私钥(使用aes256加密)
openssl genrsa -aes256 -passout pass:$PASSWORD  -out ca-key.pem 4096
#生成ca证书,填写配置信息
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"
 
#生成server证书私钥文件
openssl genrsa -out server-key.pem 4096
#生成server证书请求文件
openssl req -subj "/CN=$SERVER" -new -key server-key.pem -out server.csr
 
sh -c 'echo subjectAltName = IP:0.0.0.0,IP:${公网IP},IP:127.0.0.1 >> extfile.cnf'
sh -c 'echo extendedKeyUsage = serverAuth >> extfile.cnf'
 
#使用CA证书及CA密钥以及上面的server证书请求文件进行签发,生成server自签证书
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
 
#生成client证书RSA私钥文件
openssl genrsa -out key.pem 4096
#生成client证书请求文件
openssl req -subj '/CN=${公网IP}' -new -key key.pem -out client.csr
 
sh -c 'echo "extendedKeyUsage=clientAuth" > extfile-client.cnf'
#生成client自签证书(根据上面的client私钥文件、client证书请求文件生成)
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
 
#更改密钥权限
chmod 0400 ca-key.pem key.pem server-key.pem
#更改密钥权限
chmod 0444 ca.pem server-cert.pem cert.pem
#删除无用文件
rm client.csr server.csr
 
echo "生成文件完成"
###生成结束###

直接执行该脚本:

sh create_cert.sh

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

  1. 重启docker。
 systemctl daemon-reload
 systemctl restart docker
  1. 将certs整个复制到本地。打开Idea的Docker设置,Certificates folder选择我们存放的cert目录即可。
    在这里插入图片描述
    可以看到显示Cnnection successful,表示连接成功。

4、创建Dockerfile

我们继续使用上一篇的dockerfile-springboot工程,在该工程下添加Dockerfile文件。
在这里插入图片描述
我们需要使用Dockerfile构建我们的镜像到我们的Docker服务上,并运行该程序,最终访问接口打印“success!”。

4.1、编写Dockerfile

# 指定基础镜像作为该容器的基础环境,如springboot应用最起码得有jdk环境
FROM openjdk:17

# 执行维护者的信息
MAINTAINER xx

# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# 创建一个存放该工程的目录,将项目target目录下的jar文件复制到容器中的目录下
RUN mkdir -p /mydata/project
COPY target/springboot_08_ssmp-0.0.1-SNAPSHOT.jar /mydata/project/springboot_08_ssmp.jar

# 执行启动
ENTRYPOINT ["java", "-jar", "/mydata/project/springboot_08_ssmp.jar"]

4.2、配置启动项

选择Dockerfile的方式。

  • 1:选择我们的Dockerfile文件,
  • 2:填写我们的镜像名称,
  • 3:我们容器的名称,
  • 4:填写我们的端口映射,前面的是暴露宿主机端口,后面的是容器端口。
    在这里插入图片描述
    配置完后,直接运行,观察控制台输出日志信息。
    在这里插入图片描述
    在这里插入图片描述
    同时,控制台的左侧已经有了我们刚构建的镜像和容器:
    在这里插入图片描述
    此时,容器已经启动!

4.3、访问接口

由于我们映射出来的端口为8899,所以我们访问http://ip:8899/books/test。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1088483.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

系统架构师备考倒计时24天(每日知识点)

模块独立性的度量 聚合:衡量模块内部各元素结合的紧密程度偶然聚合:模块完成的动作之间没有任何关系,或者仅仅是一种非常松散的关系。逻辑聚合:模块内部的各个组成在逻辑上具有相似的处理动作,但功能用途上彼此无关。…

Spring framework Day10:JSR330注入注解

前言 JSR330是Java社区标准化进程(Java Community Process,简称JCP)中的一个规范,全名为"Dependency Injection for Java",即Java的依赖注入规范。它定义了一组注解和相关的规范,用于实现依赖注…

Prometheus:优秀和强大的监控报警工具

文章目录 概述Prometheus的底层技术和原理数据模型数据采集数据存储查询语言数据可视化 Prometheus的部署Prometheus的使用配置数据采集目标查询监控数据设置警报规则 查看数据可视化总结 概述 Prometheus是一款开源的监控和警报工具,用于收集和存储系统和应用程序…

NodeMCU清除Wifi信息

问题:NodeMCU连上一个Wifi后无法再连接到其他Wifi 解决方法:先清除Wifi信息 wifi.setmode(wifi.NULLMODE) wifi.sta.clearconfig()

Java学生管理系统(纯练手)

Java学生管理系统(纯练手) 该系统主要功能如下: ​添加学生:通过键盘录入学生信息,添加到集合中删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除修改学生:通过键…

《3D 数学基础》几何检测-最近点

目录 1. 直线上的最近点 2. 射线上的最近点 3. 点到平面的距离 4. 圆或球上的最近点 5. AABB上的最近点 1. 直线上的最近点 q是距离q的最近点,也就是q在直线上的投影。 其中p是直线上的点(向量表示),n是直线的法向量&#x…

基于行波理论的输电线路防雷保护

摘要 随着科技的发展,电力已成为最重要的资源之一,如何保证电力的供应对于国民经济发展和人民生活水平的提高都有非常重要的意义。输电线路的防雷保护就是重点之一。架空输电线路分布很广,地处旷野,易遗受雷击,线路的雷…

企业全域风控管理的最优解

后疫情时代,市场竞争加剧,呈现白热化状态,同时伴随企业的业务拓展、经营管理领域逐渐增多,企业面临的内外部风险、问题也呈指数增长趋势。 因此,企业在面临内外风险的双重压力下: 如何确保企业经营管理战…

【问题解决:配置】解决spring mvc项目 get请求 获取中文字符串参数 乱码

get类型请求的发送过程 前端发送一个get请求的过程: 封装参数进行URL编码,也就是将中文编码成一个带有百分号的字符串,具体可以在这个网站进行测试。http://www.esjson.com/urlEncode.html 进行Http编码,这里浏览器或者postman都…

【力扣1704】判断字符串的两半是否相似

👑专栏内容:力扣刷题⛪个人主页:子夜的星的主页💕座右铭:前路未远,步履不停 目录 一、题目描述二、题目分析 一、题目描述 题目链接:判断字符串的两半是否相似 给你一个偶数长度的字符串 s 。…

判断两个二叉树是否相等

bool isSameTree(struct TreeNode* p, struct TreeNode* q) {//两个都为空if(pNULL&&qNULL){return true;}//有一个为空if(pNULL||qNULL){return false;}//两个不为空,但值不相同if(p->val!q->val){return false;}//值相同return isSameTree(p->le…

微信小程序个人账号申请和配置详细教程

一、注册小程序管理账号 1、注册方法 在微信公众平台官网首页(mp.weixin.qq.com),点击右上角的“立即注册”按钮。 2、选择注册的账号类型 选择“小程序”,点击“查看类型区别”可查看不同类型账号的区别和优势。 3、填写邮箱和…

如何利用 J2L3x 实现团队化作业

在当今快节奏的团队工作环境中,始终有一项问题不断困扰着许多企业,那就是团队成员之间的协同工作。这个问题越来越凸显出来,并在某种程度上影响了团队的效率和生产力。然而,随着科技的不断发展,有许多新的工具和平台可…

【学习笔记】Spring Security 01 认识Spring Security的重要特征(Features)

Spring Security 零、概述 Spring Security(简称SS)是一个高可用的、可自定义的身份认证和鉴权控制的框架。 类似的框架还有Shiro。 需求场景: 现今流行的web开发中,安全的第一位。 原本的鉴权开发流程:springweb自…

堆专题3 删除堆顶元素

题目: 样例: 输入 6 3 2 6 5 8 7 输出 7 5 6 3 2 思路: 堆顶的删除,就是取 或者 覆盖掉 h[1],其中覆盖掉 h[1] 的操作,用向下调整操作堆即可,向下调整的过程相对简单,只需要将堆尾…

如何提高团队协作效率?看完这篇就懂了(附工具)

在竞争激烈的现代工作环境中,团队协作被认为是成功的关键之一。团队协作能够提高效率,增强创造力,并帮助团队成员达成共同目标。无论是在大公司还是小企业中,团队协作都是不可或缺的。在这篇文章中,我们将分享如何通过…

提高测试用例覆盖全面性 5大技巧

测试用例覆盖率越高,有助于尽早发现潜在的问题和Bug,从而保障了软件的质量和稳定性。而测试用例覆盖率可以帮助测试团队评估测试的全面性,发现测试用例的盲点和不足之处,从而提高测试的效率,帮助测试团队优化测试资源的…

OpenCV4(C++)—— 图像连通域的详细分析

文章目录 前言一、connectedComponents函数二、connectedComponentsWithStats函数 前言 图像连通域,其实就是图像分割的一种方法。它通过检测像素之间的连接关系和相似性来划分图像中的区域,以便进行后续处理。图像邻域和图像邻域分析就不介绍了&#x…

Redis第四五六章 持久化事务主从复制

Redis ⽀持 RDB 和 AOF 两种持久化机制,持久化功能有效地避免因进程退出造成数据丢失问题, 当下次重启时利⽤之前持久化的⽂件即可实现数据恢复。 目录 第四章 持久化 4.1 RDB 4.1.1 触发机制 4.1.2 流程说明 4.1.3 RDB ⽂件的处理 4.1.4 RDB 的优…

Autoform R11 R10 R8共存绿色免安装版(解压即用)

使用说明: 如杀毒软件报毒,请关闭。 保证路径正确D:\Autoform 1.首次使用,请点击“首次运行使用.vbs” (以后就不用点了) 2.打开R8~R11快捷方式即可使用 3.如果提示证书报错, 就重启电脑后就可以了&#…