SpringBoot生成docker镜像,完成容器部署

2023-11-19

docker介绍

Docker 是一个开源的应用容器引擎,基于 Go语言 并遵从Apache2.0协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。


docker安装

本次安装是基于centos7.0安装

采用yum的安装方式

yum -y install docker

等待安装完成,完成之后查看docker的版本信息。

docker version

出现:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?原因是没有启动docker服务。

启动docker服务

service docker start

 

 

docker安装出现错误排查

当启动docker服务时候可能会出现下图这个错误

可以看见错误信息里面有提示的命令,输入排查

报错信息是 SELinux不支持这个内核上OrthALA2图形驱动程序,所以我们进行编辑docker配置文件

vim /etc/sysconfig/docker

奖原先的  --selinux-enabled  修改为  --selinux-enabled=false 保存退出即可。

再重新启动服务

service docker start或者systemctl start docker

发现服务已经被启动好了。

 

 

将springboot项目打包成jar

参考:https://blog.csdn.net/qq_35618489/article/details/88228360

 

上传jar到linux服务器上面

上传路径可以自定义

ok,接下来就是创建镜像了。

 

安装JDK8的镜像

安装JDK8的镜像

docker pull java:8

如果下载很慢,建议使用阿里云的镜像加速器。https://cr.console.aliyun.com/cn-hangzhou/mirrors

在控制台输入上面的加速脚本,每个人都要唯一的加速地址

回车,继续输入上面的 docker pull java:8,下载完成查看docker安装了哪些镜像

docker images

 

创建Dockerfile文件生成镜像

因为创建镜像文件docker默认必须是:Dockerfile文件

所以在项目的任意位置创建在Dockerfile文件,我创建位置是和上面的jar包一个路径

文件内容是

FROM java:8

COPY springcloud-2.0-eureka-server.jar app.jar

EXPOSE 8010

ENTRYPOINT ["java","-jar","/app.jar","--spring.profiles.active=prod"]

介绍一下参数意思:

  • FROM java:8 是指含有jdk1.8的镜像
  • COPY springcloud-2.0-eureka-server.jar app.jar 意思是,将当前目录下面的springcloud-2.0-eureka-server.jar复制命名为app.jar,复制后的名字可以自定义。
  • EXPOSE 8010 意思就是开放内部端口8100,就是与springboot项目application.yml的项目端口号一致
  • ENTRYPOINT ["java","-jar","/app.jar","--spring.profiles.active=prod"] 就是制作镜像完成最后执行的命令,类似如下命令,只不过执行的是拷贝后的app.jar名称

保存文件退出。

使用docker build命令创建镜像

输入命令:

docker build -t sprincloud-eureka-server:1.0 .

注意

  • sprincloud-eureka-server名称是自定义的镜像名称
  • 自定义名称后面是冒号,:1.0 ,1.0当前版本号,可以自定义,
  • 最后空格加上一个点,不然会报错

创建完成查看镜像列表。

创建springboot的docker容器

不知道命令的输入

docker create --help

创建容器

docker create --name eureka -t -p 8100:8100 sprincloud-eureka-server:1.0

参数介绍

  • --name 是别名为eureka
  • -t 让docker分配一个伪终端并绑定到容器的标准输入上
  • -p 8100:8100 是项目的端口号,前面是外部通讯号,后边是项目真实端口号,二者相关联,外部端口可以随意设置,此处设置为一致
  • sprincloud-eureka-server:1.0是镜像名称和版本号

启动容器

docker start eureka && docker logs -f eureka

参数介绍

  • docker start eureka是启动容器
  • && docker logs -f eureka 启动完成之后查看日志,-f 是持续不中断

启动完成之后,在虚拟机外部查看,先关闭防火墙。

systemctl stop firewalld

ok,到此处就打包部署完毕了。

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringBoot生成docker镜像,完成容器部署 的相关文章

随机推荐

  • java解决redis缓存与数据库一致性问题

    一 如何利用Redis缓存优化数据库性能 使用 Redis 缓存可以有效地提升数据库的性能和响应速度 下面是一些常见的 Redis 缓存优化技巧 对热点数据进行缓存 通过分析系统的访问模式 找出经常被访问的热点数据 缓存到 Redis 中
  • 设置背景图片不平铺

    图片路径 background image url static demo jpg 不平铺 background repeat no repeat 居中显示 background position center 拉伸占满整个容器 backg
  • C++ 实例化对象

    实例化对象 意味着一定有调用构造函数 实例化就是给 数据成员分配内存 构造对象 对象的成员函数和普通函数的区别就是 成员函数有个指向当前对象的this指针 可以访问对象的成员变量 其依赖于对象 静态函数就更像一个全局函数 没有this指针
  • 1031 查验号码

    一个号码由17位地区 日期编号和顺序编号加1位校验码组成 校验码的计算规则如下 首先对前17位数字加权求和 权重分配为 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 然后将计算的和对11取模得到值Z 最后按照以下关
  • 数字经济发展报告 附下载地址

    数字经济是以数字化的知识和信息作为关键生产要素 以数字技术为核心驱动力量 以现代信息网络为重要载体 通过数字技术与实体经济深度融合 不断提高经济社会的数字化 网络化 智能化水平 加速重构经济发展与治理模式的新型经济形态 关注公众号 互联互通
  • Java程序员编写代码的技巧

    这样说吧 系统学Java底层 是大多数Java初学者都会缴的智商税 为什么这样说呢 1 初级开发做的是增删改查 没必要了解底层 了解了对开发帮助也不大 2 中级开发要求的是熟悉业务 能排查大多数问题 这时也无需系统学习底层技能 3 架构师确
  • 那些年Google公开的大数据领域论文

    摘要 Google于2004年公布了MapReduce论文 为数据领域工作者开启了大数据算法之门 然而Google的大数据脚步显然不止于此 其后公布了Percolator Pregel Dremel Spanner等多篇论文 没有止步的不仅
  • K - Birthday Puzzle Gym - 102267K (遍历子集的位运算)

    Today is the Birthday of a beautiful girl she s happy and she s telling her friends loudly to bring her birthday gifts O
  • 递归方法相关题目

    目录 70 爬楼梯 70 爬楼梯 简介 这里是java的解法 描述 假设你正在爬楼梯 需要 n 阶你才能到达楼顶 每次你可以爬 1 或 2 个台阶 你有多少种不同的方法可以爬到楼顶呢 注意 给定 n 是一个正整数 示例 1 输入 2 输出
  • 使用 Java 操作 Git-验证相关

    背景 日常工作中 有时候需要用代码去操作gitlab 或者github实现自动化部署 持续集成 持续部署等功能 本文就 Java 操作 git 相关的权限验证进行实践总结 工具 使用的工具为eclipse的jgit pom为目前最新版本
  • Unity3d提升效率的高级技巧(二)

    11 在层次视图中选中某个游戏对象 按快捷键 Cmd Ctrl D 即可复制该对象 对于检视面板中的数组字段也可已同样的方式来复制元素 12 检视面板中所有的颜色字段都是支持复制和粘贴的 只需右键点击颜色字段既可选择操作 13 如果觉得在场
  • Java的基础(面向对象、字符串、数学相关的工具类)

    面向对象 面向过程 当需要实现一个功能的时候 每一具体的步骤都要亲力亲为 详细处理每一个细节 强调步骤 面向对象 当需要实现一个功能时 不关心具体步骤 而是找一个已经具有该功能的人 来帮我做事 强调对象 三大特征 封装性 继承性 多态 类
  • 题目 1048: [编程入门]自定义函数之字符串拷贝(三个方案)

    有一字符串 包含n个字符 写一函数 将此字符串中从第m个字符开始的全部字符复制成为另一个字符串 方案一 include
  • android插件化flutter,Android端Flutter插件开发

    一 简介 此文章主要记录本人的flutter插件开发过程以及遇到的问题等 如有错误请指正 二 开发准备 Windows 1 Android Studio 4 0以上 2 Flutter SDK 三 环境配置 1 安装flutter sdk
  • 扫地机器人朋友圈文案_扫地机器人的简单文案

    扫地机器人哪个牌子好 推荐两款性价比高的实用机型 现如今 很多消费者在购买扫地机器人时 越来越看重产品的性价比 基于用户的消费需求 本文精选了素有 性价比之王 之称的国际大品牌德国斐纳TOMEFON旗下的两款实用扫地机器人机型 供大家选择
  • 未来的智能制造,或许会往这些方向推进

    智能制造 源于人工智能的研究 一般认为智能是知识和智力的总和 前者是智能的基础 后者是指获取和运用知识求解的能力 很多人想要了解智能制造未来的推进方向 今天小编就带大家来了解一下 希望大家能对智能制造多一些认识 能给大家带来帮助 一 更高效
  • mingw qt5.14.2 编译 vtk9.1.0

    1 软件 qt版本 qt opensource windows x86 5 14 2 exe 安装mingw选项 cmake版本 cmake 3 21 2 windows x86 64 msi VTK源码版本 VTK 9 1 0 tar g
  • the type or namespace name ‘xxx‘ could not be found(vs for Mac)解决方法

    在visual studio for Mac中遇到 the type or namespace name xxx could not be found are you missing a using derective or an asse
  • Linux下 mysql8大小写敏感问题

    说明 已经在linux上安装过了mysql 通过以下步骤解决 1 先查看mysql的运行状态 service mysql status 如果为运行状态 则停止 service mysql stop 2 修改 etc my cnf文件 添加l
  • SpringBoot生成docker镜像,完成容器部署

    docker介绍 Docker 是一个开源的应用容器引擎 基于 Go语言 并遵从Apache2 0协议开源 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级 可移植的容器中 然后发布到任何流行的 Linux 机器上 也可以实现