no21-springboot项目制作docker镜像
分类: springboot 专栏: springboot学习 标签: docker学习
2023-04-22 23:47:46 956浏览

前言:
(1)每一款软件产品都是从开发到上线,从操作系统,到运行环境,再到应用配置。很多互联网公司都不得不面对的是开发和运维之间的协作,在各个软件版本的迭代后,不同版本环境的兼容,对于运维人员来说有很大的考验。
(2)环境配置如此麻烦,换一台机器就要重新来一次 ,浪费人力物力。于是很多大牛在思考,能不能从根本上解决问题,软件可以携带环境安装?也就是说,在运维人员安装部署的时候,能不能把原始环境一模一样地复制过来。
logo含义
鲸鱼背上有集装箱
蓝色的大海----宿主机 CentOS或win7
鲸鱼----docker
集装箱----容器实例 from 来自我们的镜像模板
为啥要用docker
减轻运维的工作量,解决“在我的机器上可以正常工作,在你的机器上不能正常工作”的问题。
举例:在使用Docker前相当于搬家,把之前屋子里的所有东西完完全全的搬进一个新的房子,但环境以及发生了改变。在使用Docker后,相当于搬楼,连带房子一起搬走。
https://blog.csdn.net/u011507134/article/details/125562398
docker的三要素:
镜像:Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
容器:容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间容器可以被创建、启动、停止、删除和暂停等等,说到镜像与容器之间的关系,可以类比面向对象程序设计中的类和实例。
仓库:镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。一个 Docker Registry 中可以包含多个仓库;每个仓库可以包含多个标签;每个标签对应一个镜像,其中标签可以理解为镜像的版本号。

docker的基本使用
本人的这篇文章已经做了详细介绍
https://www.jf3q.com/article/detail/3730
配置阿里云加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://zerfqcke.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker使用docker部署
1.Docker开启远程连接
- 编辑docker.service文件,添加-H tcp://0.0.0.0:2375参数
vi /usr/lib/systemd/system/docker.service

- 重启docker
systemctl daemon-reload service docker restart
- 测试端口连接是否正常
curl http://localhost:2375/version
2.编写Dockerfile
什么是Dockerfile
Dockerfile可以认为是Docker镜像的描述文件,是由一系列命令和参数构成的脚本。
主要作用是用来构建docker镜像的构建文件。
FROM primetoninc/jdk:1.8 EXPOSE 81 VOLUME /tmp #ch9.jar这里的名字必须跟你打包生成的名字要一致 ADD target/ch9.jar /app.jar ENTRYPOINT ["java", "-jar", "app.jar"]
FROM 命令
基于哪个镜像进行构建新的镜像,在构建时会自动从docker hub拉取base镜像,必须作为Dockerfile的第一个指令出现
VOLUME 命令 [ˈvɒljuːm]
用来定义容器运行时可以挂载到宿主机的目录
ADD 命令
用来从context上下文复制新文件、目录或远程文件url,并将它们添加到位于指定路径的映像文件系统中
ENTRYPOINT命令
用来指定容器启动时执行命令
3.idea配置访问远程docker



4.修改pom
<build>
<finalName>part9_docker</finalName>
<plugins>
<!--项目基于maven pom多模块的开发的,须要设置goal-repackage属性为true,不然打包后文件依赖文件没有一块儿打包,
而后镜像内没有能够运行的程序文件maven 以下:2个打包插件都要,否则只有docker的会致使打包不完整。-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>dockerfile-maven-plugin</artifactId>
<version>1.4.13</version>
<!-- <configuration>-->
<!-- <!–禁用谷歌容器仓库–>-->
<!-- <googleContainerRegistryEnabled>false</googleContainerRegistryEnabled>-->
<!-- <repository>${docker.image.prefix}/${project.artifactId}</repository>-->
<!-- <tag>${project.version}</tag>-->
<!-- <buildArgs>-->
<!-- <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>-->
<!-- </buildArgs>-->
<!-- </configuration>-->
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!--加入下面两项配置-->
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
</plugins>
</build>5.打jar

6.运行Dockerfile


好博客就要一起分享哦!分享海报
此处可发布评论
评论(2)展开评论

新业务
springboot学习
ssm框架课
vue学习
【带小白】java基础速成