idea使用docker将Java项目生成镜像并使用

1:开启docker 远程访问

  • 使用 vim 编辑docker服务配置文件

vim /lib/systemd/system/docker.service

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutStartSec=0
RestartSec=2
Restart=always

修改 ExecStart 添加 -H tcp://0.0.0.0:2375

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375 
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutStartSec=0
RestartSec=2
Restart=always

重新加载docker配置并重启服务

systemctl daemon-reload && systemctl restart docker

然后直接在命令行客户端输入如下命令进行测试,IP地址改为自己的

curl http://192.168.56.20:2375/version

出现如下信息则代表修改Docker服务设置远程访问成功。

{"Platform": {"Name": "Docker Engine - Community"},"Components": [{"Name": "Engine","Version": "26.0.0","Details": {"ApiVersion": "1.45","Arch": "amd64","BuildTime": "2024-03-20T15:17:48.000000000+00:00","Experimental": "false","GitCommit": "8b79278","GoVersion": "go1.21.8","KernelVersion": "5.15.0-101-generic","MinAPIVersion": "1.24","Os": "linux"}},{"Name": "containerd","Version": "1.6.28","Details": {"GitCommit": "ae07eda36dd25f8a1b98dfbf587313b99c0190bb"}},{"Name": "runc","Version": "1.1.12","Details": {"GitCommit": "v1.1.12-0-g51d5e94"}},{"Name": "docker-init","Version": "0.19.0","Details": {"GitCommit": "de40ad0"}}],"Version": "26.0.0","ApiVersion": "1.45","MinAPIVersion": "1.24","GitCommit": "8b79278","GoVersion": "go1.21.8","Os": "linux","Arch": "amd64","KernelVersion": "5.15.0-101-generic","BuildTime": "2024-03-20T15:17:48.000000000+00:00"
}

特别注意的点: 完全开放Docker对外访问权限有可能会遭到别人攻击,这是很不安全的,只要别人知道你的服务器地址就能够随意连接你的Docker服务,而不需要任何认证,因此,完全开放只推荐自己在内网使用,不推荐在云服务器上直接完全开放。

在使用 docker info 命令时,会报警告

[DEPRECATION NOTICE]: API is accessible on http://0.0.0.0:2375 without encryption.Access to the remote API is equivalent to root access on the host. Referto the 'Docker daemon attack surface' section in the documentation formore information: https://docs.docker.com/go/attack-surface/
In future versions this will be a hard failure preventing the daemon from starting! Learn more at: https://docs.docker.com/go/api-security/

在未来的版本中,这将是一个阻止守护进程启动的硬故障,

那就暂时先不管。

2:在idea安装docker插件在idea安装docker插件

idea在2023.3.3版本已经内置了docker,其他版本自行下载即可
在idea安装docker插件在idea安装docker插件

3:在项目下创建Dockerfile文件(与pom.xml同目录)

这里最好放在pom.xml同级目录下,指定文件方便,如果单独放一个文件夹,指定路径的jar会报找不到,需要将打包的jar手动丢进去。
在这里插入图片描述

Dockerfile文件内容

#设置引用的jdk环境容器
FROM jdk:17
#FROM centos7-java17:latest
LABEL version="1.0"
LABEL description=" hello world docker "
#目录是终端默认在此目录下
WORKDIR /app#如果是到文件夹后面必须加上“/”,不然会找不到文件,./代表当前目录即是/app
COPY target/helloTest-0.0.1-SNAPSHOT.jar helloTest.jar
#开机执行
ENTRYPOINT ["java", "-jar", "helloTest.jar"]

6:Dockerfile文件FROM位置的绿色双箭头,去配置链接docker服务

在这里插入图片描述
在这里插入图片描述

Dockerfile : 指定 Dockerfile文件地址
Image tag : 设置上传到docker的镜像名称
Container name: 设置容器名称
Bind ports: 配置的端口绑定。例如,如果您已经在Docker主机端口5432上运行PostgreSQL,则可以将主机上的端口5433映射到容器内的5432,如前面的屏幕截图所示。这将使PostgreSQL在容器内运行,通过主机上的端口5433可访问。

在这里插入图片描述

点击 + 号,创建一个新连接

在这里插入图片描述

选择 TCP socket 连接,
输入 服务器的IP地址 + 2375 端口号
tcp://192.168.204.143:2375

输入后,idea 会立即连接,如果成功,会显示
Connection successful
在这里插入图片描述

点击OK保存后,点击RUN 运行。
在这里插入图片描述

这里显示的 Step ,是在dockerfile中写的命令,命令有几个,Step 就有几个。
正常 Step 步骤执行完后,打包就OK 了。

在这里插入图片描述
随后会立即启动

在这里插入图片描述
显示 hello world 表示启动成功

从浏览器访问测试

http://192.168.204.143:8990/

在这里插入图片描述
再看控制台
在这里插入图片描述
执行controller 方法成功。

-----end-----

后记:

我在pom.xml上加了 docker的插件,但是并不好用,实际上还是要单独提交。

<!-- docker插件--><plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>${docker.version}</version><configuration><!-- 远程Docker的地址 --><dockerHost>http://192.168.204.142:2375</dockerHost><!-- 镜像名称、前缀、项目名 --><imageName>${docker.image.prefix}</imageName><!-- Dockerfile的位置 --><dockerDirectory>${project.basedir}/build</dockerDirectory><resources><resource><targetPath>/</targetPath><!-- 表示的target文件夹 --><directory>${project.build.directory}</directory><!-- 表示打出来的JAR包--><include>${project.build.finalName}.jar</include></resource></resources></configuration></plugin>

只是打了jar,。

测试项目地址

https://github.com/yanzhao77/helloTest

参考资料:

1,win10 版本的docker
idea使用docker生成镜像(打包镜像,导入镜像,导出镜像)
2,
Docker安全开放远程访问连接权限
3,
Docker镜像和容器的基本命令操作
4,
IDEA 打包docker镜像(以打包Jdk8为例)

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

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

相关文章

操作系统内功篇:内存管理之虚拟内存

一 虚拟内存 在这种情况下&#xff0c;要想在内存中同时运行两个程序是不可能的。如果第一个程序在 2000 的位置写入一个新的值&#xff0c;将会擦掉第二个程序存放在相同位置上的所有内容&#xff0c;所以同时运行两个程序是根本行不通的&#xff0c;这两个程序会立刻崩溃。 …

最简单的 AAC 音频码流解析程序

最简单的 AAC 音频码流解析程序 最简单的 AAC 音频码流解析程序原理源程序运行结果下载链接参考 最简单的 AAC 音频码流解析程序 参考雷霄骅博士的文章&#xff1a;视音频数据处理入门&#xff1a;AAC音频码流解析 本文中的程序是一个AAC码流解析程序。该程序可以从AAC码流中…

Linux(05) Debian 系统修改主机名

查看主机名 方法1&#xff1a;hostname hostname 方法2&#xff1a;cat etc/hostname cat /etc/hostname 如果在创建Linux系统的时候忘记修改主机名&#xff0c;可以采用以下的方式来修改主机名称。 修改主机名 注意&#xff0c;在linux中下划线“_”可能是无效的字符&…

数据结构(初阶)第一节:数据结构概论

本篇文章是对数据结构概念的纯理论介绍&#xff0c;希望系统了解数据结构概念的友友可以看看&#xff0c;对概念要求不高的友友稍做了解后移步下一节&#xff1a; 数据结构&#xff08;初阶&#xff09;第二节&#xff1a;顺序表-CSDN博客 正文 目录 正文 1.数据结构的相关概…

qqqqqqq

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

Polardb MySQL 产品架构及特性

一、产品概述; 1、产品族 参考&#xff1a;https://edu.aliyun.com/course/3121700/lesson/341900000?spma2cwt.28120015.3121700.6.166d71c1wwp2px 2、polardb mysql架构优势 1&#xff09;大容量高弹性&#xff1a;最大支持存储100T&#xff0c;最高超1000核CPU&#xff0…

open Gauss 数据库-03 openGauss数据库维护管理指导手册

发文章是为了证明自己真的掌握了一个知识&#xff0c;同时给他人带来帮助&#xff0c;如有问题&#xff0c;欢迎指正&#xff0c;祝大家万事胜意&#xff01; 目录 前言 openGauss数据库维护管理 1 操作系统参数检查 1.1 实验介绍 1.2 场景设置及操作步骤 2 openGauss 运…

认识什么是Webpack

目录 1. 认识Webpack 1.1. 什么是Webpack?&#xff08;定义&#xff09; 1.2. 使用Webpack 1.2.1. 需求 1.2.2. 步骤 1.3. 入口和出口默认值 1.3.1. 需求代码如下 2. 修改Webpack打包入口和出口 2.1. 步骤&#xff1a; 2.2. 注意 3. Webpack自动生成html文件 3.1.…

D-迷恋网游(遇到过的题,做个笔记)

我的代码&#xff1a; #include <iostream> using namespace std; int main() {int a, b, c; //a表示内向&#xff0c;b表示外向&#xff0c;c表示无所谓cin >> a >> b >> c; //读入数 if (b % 3 0 || 3-b % 3 < c) //如果外向的人能够3人组成…

真·面试题总结——JVM虚拟机

JVM虚拟机 JVM虚拟机规范与实现 JVM虚拟机规范 JVM虚拟机实现 JVM的常见实现 JVM虚拟机物理架构 JVM虚拟机的运转流程 JVM类加载过程 JVM类加载器及类加载器类型 JVM类加载器双亲委派机制 JVM运行时数据区的内存模型 JVM运行时数据区的内存模型&#xff1a;程序计数器…

蓝桥杯第八届c++大学B组详解

目录 1.购物单 2.等差素数列 3.承压计算 4.方格分割 5.日期问题 6.包子凑数 7.全球变暖 8.k倍区间 1.购物单 题目解析&#xff1a;就是将折扣字符串转化为数字&#xff0c;进行相加求和。 #include<iostream> #include<string> #include<cmath> usin…

vue2 列表一般不使用索引删除的原因

在 Vue 中使用索引来删除列表项可能会导致一系列问题&#xff0c;尤其是在处理动态列表时。以下是一些可能的问题和相应的例子&#xff1a; 1. 数据不一致问题 当你使用索引来删除列表中的某个项时&#xff0c;如果列表中的其他项发生了变化&#xff08;比如新增或重新排序&a…

编译时提示存在多个默认构造函数的错误怎么解决呢?

c程序中&#xff0c;如果编译器提升存在多个默认构造函数怎么解决呢&#xff1f; class Date { public:Date(){_year 1900;_month 1;_day 1;}Date(int year 1900, int month 1, int day 1){_year year;_month month;_day day;} private:int _year;int _month;int _day…

chromium源码学习-调试日志 LOG

在学习 chromium 源码时&#xff0c;我们经常需要增加调试日志&#xff0c;常见的用法一般是 LOG(INFO) << "调试信息";其中 INFO 代表当前这条日志的级别&#xff0c;使用的时候就是输入 INFO 就行。接下来我们在探索下这个宏背后的内容。 一、基本用法 LO…

读所罗门的密码笔记08_共生思想(下)

1. 机器判断 1.1. 在生活的各个领域&#xff0c;机器正在我们无意识的情况下做出更多的决定 1.1.1. 我们看到的新闻会塑造我们的观点和行动&#xff0c;它们是根据我们过去行为中所表达的倾向&#xff0c;或者其他同类人的行为而生成的 1.2. …

K-均值聚类算法

K-均值聚类算法是一种常用的无监督学习算法&#xff0c;用于将数据集分成 K 个簇。该算法的主要思想是通过迭代的方式将数据点分配到离它们最近的簇中&#xff0c;并更新簇的中心点&#xff0c;直到满足某个停止条件为止。 以下是 K-均值聚类算法的基本步骤&#xff1a; 初始化…

【热门话题】WebKit架构简介

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 WebKit架构简介一、引言二、WebKit概览1. 起源与发展2. 模块化设计 三、WebCore…

软考高级架构师:流水线的概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

基于SSM的“任务发布接收平台”的设计与实现(源码+数据库+文档+PPT)

基于SSM的“任务发布接收平台”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SSM 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 登录界面 前台界面 收藏界面 留言管理界面 任务管理界面 订…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑灵活性供需平衡的新型电力系统长短期储能联合规划》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…