10.Spring Boot2.5实战 Docker 容器|学习笔记

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 快速学习10.Spring Boot2.5实战 Docker 容器。

开发者学堂课程【Spring Boot 2.5.x 开发实战10.Spring Boot2.5实战 Docker 容器】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/853/detail/14075


10.Spring Boot2.5实战 Docker 容器

 

内容介绍:

一、Spring Boot Docker 容器部署方式

二、DockerFile 命令

三、高级面试题

 

一、Spring Boot Docker 容器部署方式

1.Spring Boot 2.5.x部署方式

image.png

由于 Spring Boot 内嵌了很多 Web 容器,现在部署 Spring Boot应用相对比较简单。这里指的 Web 应用可以用这个方法部署。如果要部署普通的应用,比如命令方式,也可以用 doctor 方式或者用其他的部署工具结合服务器或者远端的云端服务器进行自动化部署。

2.Spring Boot 实战 Docker 容器 Docker Hub

Docker作为一个容器工具,它实际是一个平台、一个生态,它包括Docker的服务器端、客户端以及仓库和可视化管理界面。

课程讲解过程中用的是 windows10,两年前 windows1 不支持Docker,现在基本上可以,因为要开虚拟化技术。如果用 Linux 环境或者 Mac OS,Docker 环境是比较容易安装。

如果也用 windows10,要注意打开配置 Docker 环境

image.png

DockerHub 本身是个类似于一个镜像的仓库,只不过这个服务器基本上都在美国。国内的话像阿里跟 Docker 签了合作协议,阿里云构建了一个 Docker 中国大陆的镜像服务,可以创建 Docker 的私有仓库。阿里云注册账号后在自己的账号里面可以看到 Docker 的一个镜像。Docker 应用程序的一个构建和发布标准化大规模集群的部署提供了非常便捷的操作方式。

image.png

Docker 本身也有自己的管理工具叫 Docker swarm。当有了Docker 专属的 DockerHub 地址之后,再想上传到镜像的时候,可以上传到阿里云的 Docker 仓库里面。

在上传到阿里云仓库之前要先构建镜像,比如 MySQL、MongoDB、Redis 或者 Java 的一些标准主机镜像以外,也可以构建自己的镜像。 但是要注册账号,有 Docker 专属的 DockerHub 地址。(前提是要登录指定服务器、账号和密码)

image.png

构建镜像,除了 MySQL 等等这种标准组件之外,可以构建自己的镜像。例如,自己开发的网站等微服务项目,要自己做成镜像才能大规模部署。

这里注册的是 Docker Hub 的一个账号,注册完后记住账号和密码:

image.png

在该基础上后面会演示推送。

3.阿里云 Docker 镜像仓库

(1)国内第一个提供 Docker 服务的云计算公司

(2)2016年云栖大会宣布与 Docker 官方合作

(3)提供 Docker Images 镜像加速

(4)提供景象仓库

(5)免费注册使用

(6)Docker Hub 中国站与 Docker Hub 完全一致

4.Docker 分布式集群架构

image.png

(1)Docker 主要是方便开发和运维团队做大规模集群化部署。

(2)Linux 安装 Docker 容器

Linux安装:sudo apt-get install docker

Mac OS: Docker Desktop for Mac

推荐Linux系统,互联网公司首选

5.Docker 容器平台常用命令

搜索镜像: sudo docker search java

拉取镜像: sudo docker pull java

运行镜像: docker run

获取帮助: docker help

构建镜像: docker build

提交镜像: docker commit

新建镜像: docker create

运行镜像: docker run

重启镜像: docker restart

查询全部: docker images

查看信息: docker info

推送景象: docker push

 

二、DockerFile 命令

Docker 构建的早期需要 DockerFile,就是 Docker 构建了一个命令文件。Docker 基于这个文件构建镜像并且打包镜像。

1.DockerFile

(1) Docker镜像配置文件

(2) 脚本编写

(3) 脚本文件

(4)一系列命令和参数构成的脚本,

(5) 这些命令应用于基础镜像

(6) 并最终创建一个新的镜像

2.DockerFile 重要指令 

(1) FROM 指定基础镜像文件  

(2) MAINTAINER authors_name  作者  

(3)RUN 运行特殊命令,比如下载 JDK  

(4)SER 命令用于设置运行容器的 UID  

5 VOLUME 指定容器访问目录  

(6) WORKDIR 运行目录  

(7)ENV 环境变量,如 ENV LANG en_US.UTF-8  

(8)CMD 容器执行的命令 CMD "echo" "Hello docker!"  

(9) ADD 复制文件到目标文件夹  

(10COPY 复制,类似 ADD  

(11EXPOSE 暴露端口  

(12ENTRYPOINT 入口,命令,只有一个不能被 Run 覆盖

3.DockerFile 例子

FROM java:8

COPY . /var/www/java

WORKDIR /var/www/java

RUN javac JavaDocker.java

CMD["java", "JavaDocker"]

4. Spring Boot 2.5 Docker 制作镜像 

(1)环境需求  

•docker (1.6.0 or above)

•jdk 1.8  

•Maven 3.0+或者Gradle 2.3+

(2)Spring Boot 2.4全新docker构建工具

•Spring Boot 2.4 推出了自己的 docker 构建工具

•一键构建 Docker 镜像,无需 Dockerfile

•之前工具 spotify 、fabric8,配置插件使用,需要 Dockerfile

• jib-maven-plugin 是 Google18 年 7 月发布的Java 镜像工具(支持 )

Maven 和 Gradle),也无需 Dockerfile

•整合在原有的 spring-boot-maven-plugin 中,

•只需要配置对应目标仓库和主机信息即可完成镜像构建。

•新命令:mvn spring-boot:build-image

5.Dockerfile 制作镜像

•FROM java:8  

•VOLUME /tmp  

•ADD java-spring-boot-docker-0.1.0.jar app.jar  

•RUN bash -c 'touch /app.jar'  

•ENTRYPOINT ["java","Djava.security.egd=file:/dev/./urandom","jar","/app.jar"]

6.演示

1Build Docker Image with Maven

• <plugin>  

• <groupId>com.spotify</groupId>  

• <artifactId>docker-maven-plugin</artifactId>  

• <version>0.2.3</version>  

• <configuration>  

•<imageName>${docker.image.prefix}/${project.artifactId}</imageName>  

• <dockerDirectory>src/main/docker</dockerDirectory>  

• <resources> • <resource> • <targetPath>/</targetPath>

• <directory>${project.build.directory}</directory>  

• <include>${project.build.finalName}.jar</include>  

• </resource>  

• </resources>  

• </configuration>  

• </plugin>

注意 Spring Boot 的版本,这里演示是2.3.7 版本。

(2)Building the Docker Image

构建 mvn clean package dockerfile:build Docker images docker run -p 8080:8080 -d /app.jar

查看运行的 Docker

docker ps

./mvnw install dockerfile:build

./mvnw dockerfile:push

(3)实战演示

打开 Docker项目,配置配置插件:

(注意 Docker 镜像名字要小写,否则会出现各种错误)

image.png

这个项目的操作简单:

image.png

DockerFile

端口可以改变(转化),该容器中的镜像可以指定编译的名字

image.png

打开编译窗口,执行构建的操作:

注意这里用 DockerFile :built

image.png

构建成功:

image.png

docker images 查看本地镜像:

image.png

可以看到8秒之前刚刚构建

启动:

docker run 加端口映射启动

image.png

浏览器测试:

image.png

image.png

运行成功后在本地可以访问

现在可以将其放在 docker 号上

现在先演示如何退出镜像:

image.png

然后 docker login 登录:

image.png

push 命令:

image.png

刷新 Docker Hub 仓库:

点击刚上传的镜像:

(注意,作为企业有可能连接自己的服务器镜像)

image.png

image.png

拉取命令:

image.png

也可以直接在命令行:

image.png

image.png

 

三、高级面试题

1. Docker 是什么?解决什么问题?  

2. Docker 的优势?  

3. Swarm 工具和 Docker 的关系  

4. K8s 优势是什么?  

5. 如何安装 Docker 容器?  

6. 如何制作、推送 Docker 镜像?  

7. 如何搜索、拉取、启动 Docker 镜像?  

8. Docker 如何容器部署 Spring Boot 2.5.x 和微服务

相关文章
|
7天前
|
人工智能 自然语言处理 前端开发
Spring AI与DeepSeek实战二:打造企业级智能体
本文介绍如何基于Spring AI与DeepSeek模型构建企业级多语言翻译智能体。通过明确的Prompt设计,该智能体能自主执行复杂任务,如精准翻译32种ISO标准语言,并严格遵循输入格式和行为限制。代码示例展示了如何通过API实现动态Prompt生成和翻译功能,确保服务的安全性和可控性。项目已开源,提供更多细节和完整代码。 [GitHub](https://github.com/zlt2000/zlt-spring-ai-app) | [Gitee](https://gitee.com/zlt2000/zlt-spring-ai-app)
95 11
|
14天前
|
人工智能 Java API
Spring AI与DeepSeek实战一:快速打造智能对话应用
在 AI 技术蓬勃发展的今天,国产大模型DeepSeek凭借其低成本高性能的特点,成为企业智能化转型的热门选择。而Spring AI作为 Java 生态的 AI 集成框架,通过统一API、简化配置等特性,让开发者无需深入底层即可快速调用各类 AI 服务。本文将手把手教你通过spring-ai集成DeepSeek接口实现普通对话与流式对话功能,助力你的Java应用轻松接入 AI 能力!虽然通过Spring AI能够快速完成DeepSeek大模型与。
312 11
|
13天前
|
安全 持续交付 云计算
课时5:阿里云容器服务:最原生的集成Docker和云服务
阿里云容器服务以服务化形式构建容器基础设施,大幅提升开发效率,简化应用部署流程。通过Docker容器和DevOps工具(如Jenkins),实现自动化部署与迭代,优化企业内部复杂部署问题。该服务支持GPU调度、混合云架构无缝迁移,并与阿里云产品体系无缝集成,提供安全防护、网络负载均衡等多重功能支持。凭借微服务架构,帮助企业突破业务瓶颈,提高资源利用率,轻松应对海量流量。
课时5:阿里云容器服务:最原生的集成Docker和云服务
|
1月前
|
Ubuntu API 网络虚拟化
ubuntu22 编译安装docker,和docker容器方式安装 deepseek
本脚本适用于Ubuntu 22.04,主要功能包括编译安装Docker和安装DeepSeek模型。首先通过Apt源配置安装Docker,确保网络稳定(建议使用VPN)。接着下载并配置Docker二进制文件,创建Docker用户组并设置守护进程。随后拉取Debian 12镜像,安装系统必备工具,配置Ollama模型管理器,并最终部署和运行DeepSeek模型,提供API接口进行交互测试。
365 15
|
1月前
|
XML Java 数据格式
Spring容器的本质
本文主要讨论Spring容器最核心的机制,用最少的代码讲清楚Spring容器的本质。
|
26天前
|
JavaScript 前端开发 Java
Jeesite5:Star24k,Spring Boot 3.3+Vue3实战开源项目,架构深度拆解!让企业级项目开发效率提升300%的秘密武器
Jeesite5 是一个基于 Spring Boot 3.3 和 Vue3 的企业级快速开发平台,集成了众多优秀开源项目,如 MyBatis Plus、Bootstrap、JQuery 等。它提供了模块化设计、权限管理、多数据库支持、代码生成器和国际化等功能,极大地提高了企业级项目的开发效率。Jeesite5 广泛应用于企业管理系统、电商平台、客户关系管理和知识管理等领域。通过其强大的功能和灵活性,Jeesite5 成为了企业级开发的首选框架之一。访问 [Gitee 页面](https://gitee.com/thinkgem/jeesite5) 获取更多信息。
Jeesite5:Star24k,Spring Boot 3.3+Vue3实战开源项目,架构深度拆解!让企业级项目开发效率提升300%的秘密武器
|
3月前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
348 78
|
2月前
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
221 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
3月前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
108 8
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
|
3月前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
216 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档