Idea集成Docker

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.csrsh -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.csrsh -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.csrecho "生成文件完成"
###生成结束###

直接执行该脚本:

sh create_cert.sh

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

  1. 重启docker。
 systemctl daemon-reloadsystemctl 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.rhkb.cn/news/160505.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每日一题 2652. 倍数求和(简单)

最简单的做法,遍历求和,时间O(n) class Solution:def sumOfMultiples(self, n: int) -> int:return sum([i if (i % 3 0) or (i % 5 0) or (i % 7 0) else 0 for i in range(n 1)])如果只求在 [1,n] 内能被m整除的数之和,那么 ans (…

[MQ]Win平台RocketMQ安装启动

1、下载 官网下载地址:https://rocketmq.apache.org/zh/download 2、解压ZIP包 解压rocketmq-all-x.x.x-bin-release.zip到目录。 比如我解压到了E:\Env\MQ_rocket\rocketmq-all-5.1.4-bin-release 3、配置环境变量 ROCKETMQ_HOME 4、RocketMQ JVM内存配置 这个需要…

3dmax中的 (Corona 9)cr渲染器怎么渲染?cr渲染器使用教程

Corona 9渲染器在3ds Max和Cinema 4D中应用广泛,是一款高效且功能强大的渲染器,得到了许多用户的好评。 Corona 9有以下几个主要的特点: 出色的渲染速度:Corona 9被证明是一个快速且高效的渲染引擎,它能够在保证高质…

虹科 | 解决方案 | 虹科Pico振动异响(NVH)诊断方案

车辆行驶过程中的偶发性异响(比如经过颠簸路面时的吱嘎声)和某一特定车速/转速下持续/周期性出现的异响,要将故障重现并定位故障点,对维持技师来讲是个重大的挑战。传统的测试方法是使用底盘听诊器,车辆一边在路上跑&a…

一文带你认识高速低侧栅极驱动器 FAN3111ESX 带你深入了解其特点及应用

FAN3111ESX一款低端驱动器产品,是外部 DC 2 至 5 V 参考输入、单通道同相输出、1.4 A 峰值灌电流、1.4 A 源电流低端栅极驱动器。 FAN3111ESX 1A栅极驱动器为驱动一个在低侧开关应用中的 N沟道增强型 MOSFET 而设计。 对于使用低压控制器和其它和驱动器相比使用更…

云计算是什么?学习云计算能做什么工作?

很多人经常会问云计算是什么?云计算能干什么?学习云计算能做什么工作?其实我们有很多人并不知道云计算是什么,小知今天来给大家讲讲学习云计算能做什么。 中国的云计算行业目前正处于快速发展阶段,随着互联网和数字化…

JMeter连接数据库

一. 下载数据库驱动jar包 https://jdbc.postgresql.org/download/ 二. 将数据库驱动放到jmeter的lib目录下 三. 在jmeter中引用这个jar包 四. 添加一个jdbc数据库连接配置 五. 添加一个jdbc request来查询sql并将查询结果赋值给一个变量 六. 将查询结果用于其他请求

防雷接地的作用和施工案例方案

防雷接地是一种防止雷电对建筑物、设备和人员造成危害的措施,它通过将建筑物或设备的金属部件与大地电位相连,使雷电流能够安全地泄放到地下,从而避免电击、火灾、爆炸等事故的发生。 地凯科技防雷接地系统一般由三个部分组成:接…

基于Java的教学评价管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding) 代码参考数据库参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

一个标准的异常枚举类可以如何定义

一个标准的异常枚举类可以如何定义? 首先,使用enum关键字定义一个枚举类型。在枚举类型中,定义各种异常类型,每个异常类型用一个枚举常量表示。为每个异常类型添加一个构造方法,用于初始化异常类型的信息。可以为异常…

python 之enumerate()函数

文章目录 enumerate() 是 Python 中的一个内置函数,它用于在遍历可迭代对象(如列表、元组、字符串等)时同时获取每个元素的索引和值。这个函数非常有用,因为它允许您在迭代过程中轻松地访问元素的索引,而不需要手动维护…

linux centos7提示 cannot found font installed on the system.calibri

主图 目录 1.问题描述2.问题解决2.1安装Microsoft Core Fonts2.2手动安装字体文件:2.3查看当前系统基本型细腻 总结参考 文章所属专区 超链接 1.问题描述 linux centos7提示 cannot found font installed on the system.calibri ,linux系统找不到cali…

Adobe Premiere Pro 和 After Effects 安装出错的解决路径

在有点年头的电脑上安装Premiere Pro 和 After Effects 遇到了前所未有的的麻烦,请了某宝上的小哥进行远程安装,两个软件倒是可以用了,但Win11系统无法正常关机,用了几天系统除了关机时会蓝屏几十秒,其他没有发现毛病&…

node多版本管理器nvm

node多版本管理器nvm 1、为何要使用node版本管理器2、nvm安装步骤2-1、卸载系统中的node2-2、下载nvm2-3、安装 3、维护node版本3-1、安装指定版本node3-2、查看本机已安装的所有node版本3-3、切换本机node版本 1、为何要使用node版本管理器 在日常开发中,难免会遇…

云服务器ip使用细节(公网、私有)

场景: 当我们对tcp服务器进行监听的时候,可能需要用到ip地址,比如使用httplib::Service::listen(ip, port),而当我们访问tcp服务器时也需要ip地址 但这两个ip是不同的! 每个云服务器通常都会有一个公网IP地址和一个私有…

Go语言入门心法(六): HTTP面向客户端|服务端编程

Go语言入门心法(一): 基础语法 Go语言入门心法(二): 结构体 Go语言入门心法(三): 接口 Go语言入门心法(四): 异常体系 Go语言入门心法(五): 函数 一:go语言面向web编程认知 Go语言的最大优势在于并发与性能,其性能可以媲美C和C,并发在网络编程中更是至关重要 使用http发送请…

Git 速通以及常用指令!!

参考视频 01 - Git - 教程简介_哔哩哔哩_bilibili 在需要使用git的文件夹打开git bash,指令如下↓ 当然图形化界面也很香!github desktop也很舒服! 查看文件 版本号 git cat-file -p 版本号 仓库操作 在当前文件夹下创建git仓库 git ini…

使用Proxyman抓取Android的https请求

使用Proxyman抓取Android的https请求 有时,您可能需要测试您的移动应用程序并检查与其关联的所有网络请求。在网络上,此任务非常简单,只需按Ctrl Shift I打开开发人员工具即可。从那里,您可以导航到网络选项卡并检查与网页相关的…

【黑马程序员】机器学习

(一)机器学习概述 一、机器学习算法分类 1、监督学习: (1)目标值是类别:分类问题 k-近邻算法、贝叶斯分类、决策树与随机森林、逻辑回归 (2)目标值是连续型的数据:回归…

.NET 8使用牛逼的AOT发布ASP.NET Core应用

简介 .NET AOT编译是一种.NET运行时的编译方式,它与传统的JIT编译方式不同。在传统的JIT编译中,.NET应用程序的代码在运行时才会被编译成本地机器码,而在AOT编译中,代码在运行之前就被提前编译成本地机器码。这样可以在代码运行的…