一、镜像结构介绍:
- 镜像:层(Layer)添加安装包、依赖、配置等,每一次操作都形成新的一层;基础镜像(BaseImage)应用依赖的系统函数库、环境、配置、文件等;入口(Entrypoint)镜像运行入口,一般是程序启动脚本和参数;包含应用程序所需要的运行环境、数据库、配置以及应用本身等各种文件,这些文件分层打包而成。
- Dockerfile 定义:就是一个文本文件,包含一个个指令,通过指令来说明要执行什么操作来构建镜像。将来Docker可以根据Dockerfile帮我们构建镜像。Dockerfile做什么的? 利用固定的指令来描述镜像的结构和构建过程,这样Docker才可以依次来构建镜像。
- 常见指令
FROM :指定基础镜像
ENV:设置环境变量,可以在后面指令使用
COPY:拷贝本地文件到镜像的指定目录
RUN:执行Linux的shell命令,一般安装过程的命令
EXPOSE:指定容器运行时监听的端口,是给镜像使用者看的
ENTRYPOINT:镜像应用的启动命令,容器运行时调用
Dockerfile supports the following instructions地址
- 构建镜像的命令是什么?
docker build -t 镜像名称:tag Dockerfile目录
部署一个java应用的步骤:
- 准备一个Linux服务器
- 安装JRE并配置环境变量
- 拷贝Jar包
- 运行jar包
二、构建镜像简单demo实践 - Dockerfile 创建文件
touch Dockerfile
- 编辑Dockerfile相关内容
#使用OpenJDK作为基础镜像
FROM openjdk:17-jdk-alpine
# 将jar文件复制到镜像的/app目录下
# 注意:这里的your-springboot-app.jar应该替换为你实际的jar文件名
COPY target/aitestpro-0.0.1-SNAPSHOT.jar /app/aitestpro-0.0.1-SNAPSHOT.jar #设置工作目录为/app
WORKDIR /app
#设置时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo > /etc/timezone# 暴露应用程序端口(Spring Boot默认是8080)
EXPOSE 8080# 设置容器启动时执行的命令
# 这里使用java -jar来运行jar文件
ENTRYPOINT ["java", "-jar", "aitestpro-0.0.1-SNAPSHOT.jar"]
二、打包Spring Boot 3项目为jar文件
./mvnw clean package -DskipTests
或者直接通过idea软件 mvn插件命令打包
三、Docker 构建
docker build -t docker-aipro .
- -t:给镜像起名字,格式是repostory:tag格式,不指定格式是默认为latest。
- . :是指定Dockerfile的目录,并且关系文件内部的执行命令。若为当前目录就为"."。
- 若有文件中有相关的jdk镜像,可以提前加载,构建时,速度会快一些。
docker load -i jdk.jar
-
加载完查看相关的镜像
-
进入相关的Dockerfile目录下进行构建日志
-
查看生成的镜像列表
运行相关的镜像
docker run -d --name aipro -p 8080:8080 docker-aipro
- 查看镜像进程及相关的日志
docker ps
docker logs docker-aipro
浏览器访问Springboot项目: