【Docker】5、Dockerfile 自定义镜像(镜像结构、Dockerfile 语法、把 Java 项目弄成镜像)

简介: 【Docker】5、Dockerfile 自定义镜像(镜像结构、Dockerfile 语法、把 Java 项目弄成镜像)


零、学习内容

  • 镜像结构
  • Dockerfile 语法
  • 构建 Java 项目

① 之前使用的镜像都是 DockerHub 官方提供的

② 开发者需要将自己的微服务制作为镜像

一、镜像结构

镜像是由应用程序及其需要的系统函数库环境配置依赖打包而成。

📝 镜像是分层结构,每一层称为一个 Layer

1️⃣ BaseImage 层:包含基本的系统函数库、环境变量、文件系统

2️⃣ Entrypoint:入口,是镜像中应用启动的命令

2️⃣ 其它:在 BaseImage 基础上添加依赖、安装程序、完成整个应用的安装和配置

二、Dockerfile

📃 Dockerfile 是一个文本文件

📃 其中包含很多指令 (Instruction)

📃 可通过指令来说明要执行什么操作来构建镜像

📃 每一个指令都会形成一层 Layer

Dockerfile 官方文档:https://docs.docker.com/engine/reference/builder

四、基于 java:8-alpine 构建自己的 Java 项目镜像

✏️ 1、新建空文件夹 docker-demo

mkdir docker-demo

✏️ 2、把 Java 项目的 jar 文件上传到 docker-demo 目录中

✏️ 3、把 jdk8.tar.gz 文件上传到 docker-demo 目录中(安装 jdk)

✏️ 4、把 Dockerfile 文件上传到 docker-demo 目录中

# 指定基础镜像
FROM java:8-alpine
  
# 拷贝jdk和java项目的包
COPY ./Morning.jar /tmp/app.jar
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

✏️ 5、利用 Dockerfile 文件构建镜像

✏️ 6、通过镜像创建容器

docker run --name javaweb -p 8090:8090 -d javaweb:1.0

记得防火墙开启端口或安全组

相关文章
|
11天前
|
缓存 Linux 网络安全
docker的镜像无法下载如何解决?
【10月更文挑战第31天】docker的镜像无法下载如何解决?
329 28
|
7天前
|
存储 关系型数据库 Linux
【赵渝强老师】什么是Docker的镜像
Docker镜像是一个只读模板,包含应用程序及其运行所需的依赖环境。镜像采用分层文件系统,每次修改都会以读写层形式添加到原只读模板上。内核bootfs用于加载Linux内核,根镜像相当于操作系统,上方为应用层。镜像在物理存储上是一系列文件的集合,默认存储路径为“/var/lib/docker”。
|
13天前
|
存储 监控 Linux
docker构建镜像详解!!!
本文回顾了Docker的基本命令和管理技巧,包括容器和镜像的增删改查操作,容器的生命周期管理,以及如何通过端口映射和数据卷实现容器与宿主机之间的网络通信和数据持久化。文章还详细介绍了如何使用Docker部署一个简单的Web应用,并通过数据卷映射实现配置文件和日志的管理。最后,文章总结了如何制作自定义镜像,包括Nginx、Python3和CentOS镜像,以及如何制作私有云盘镜像。
81 2
|
7天前
|
缓存 JavaScript 安全
深入理解Docker镜像构建过程
深入理解Docker镜像构建过程
23 0
|
Java 应用服务中间件 Linux
使用docker部署springboot项目小白教程
使用docker部署springboot项目小白教程
527 0
|
6月前
|
NoSQL Java Redis
利用Docker部署一个简单的springboot项目
利用Docker部署一个简单的springboot项目
204 2
|
6月前
|
Java 关系型数据库 MySQL
docker 部署springboot项目,连接mysql容器
docker 部署springboot项目,连接mysql容器
290 0
|
6月前
|
Java Docker 容器
docker-compose部署一个springboot项目(包含环境)
docker-compose部署一个springboot项目(包含环境)
187 0
|
前端开发 应用服务中间件 nginx
docker Compose 部署springboot+vue前端端分离项目
docker Compose 部署springboot+vue前端端分离项目
439 0
|
Java Linux Maven
使用Docker和Dockerfile部署SpringBoot项目应用程序
使用Docker和Dockerfile部署SpringBoot项目应用程序
371 0