当前位置: 首页 > news >正文

如何构建Docker自定义镜像

说明:平常我们使用Docker运行各种容器,极大地方便了我们对开发应用的使用,如MySQL、Redis,以及各种中间件,使用时只要拉镜像,运行容器即可。本文介绍如何创建一个Demo,自定义构建一个镜像。

开始之前,需要在自己的服务器或者虚拟机内安装Git、Maven、JDK和Docker,可参考下面这两篇文章;

  • Docker安装&卸载

  • 在云服务器上安装Jenkins(前提)部分

创建项目

首先,在GitLab上创建一个仓库,里面写一个Demo代码,如下:

Controller

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/docker")
public class DockerFileController {@GetMappingpublic String getDockerFile() {return "Hello Dockerfile!";}
}

启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class App {public static void main(String[] args) {SpringApplication.run(App.class, args);}
}

Application.yml

server:port: 8080

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.hezy</groupId><artifactId>docker_file_demo</artifactId><version>1.0-SNAPSHOT</version><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.12</version><relativePath/></parent><properties><maven.compiler.source>11</maven.compiler.source><maven.compiler.target>11</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

启动,测试,没得问题

在这里插入图片描述

编写Dockerfile文件

将代码push到远程仓库,登录服务器,用git将代码克隆到服务器里;

在这里插入图片描述

进入项目的根目录,编写Dockerfile文件。Dockerfile文件就是需要自定义镜像的脚本文件,文件内包含了一个个指令,说明了构建该镜像所需的环境及操作。相关指令如下:

  • FROM:指定基础镜像,即代码运行的环境;

  • ENV:设置变量,可在下面执行CMD命令时使用,如设置JAVA的环境;

  • COPY:拷贝文件;

  • RUN:执行Linux的shell命令;

  • EXPOSE:指定容器运行的端口,如上面的项目则需要指定为8080,即程序运行的端口;

  • ENTRYPOINT:运行程序的CMD命令,如java -jar jar包;

如前面的Demo项目,Dockerfile文件内容如下:

# 使用官方 OpenJDK 11 镜像作为基础镜像
FROM openjdk:11# 将应用程序 JAR 文件复制到容器中
COPY ./target/docker_demo-1.0-SNAPSHOT.jar /home/docker_demo.jar# 指定容器启动时运行的命令
CMD ["java", "-jar", "/home/docker_demo.jar"]

注意文件名,必须是Dockerfile

在这里插入图片描述

构建容器

在当前目录,敲下面的命令,将项目打包;

mvn clean package

如果你想确认一下jar包有没问题,可以像我一下,进入target目录,手动启动下看报不报错

在这里插入图片描述

继续敲下面的命令,构建镜像,制定镜像名(-t)为docker-demo,注意后面有个点(.)

docker build -t docker-demo .

在这里插入图片描述

首次构建需要下载openjdk,可能有点慢,如下,是我首次构建时的信息,花了5分钟左右;

在这里插入图片描述

启动容器

这时敲下面的命令,可以查看是否新增了一个镜像;

docker images

或者

docker image ls

在这里插入图片描述

然后敲下面的命令,使用这个镜像启动一个容器;

docker run --name docker-demo -p 8080:8080 -d docker-demo
  • –name:指定容器名;

  • –p:指定映射的端口,外部访问云服务器8080端口,就是访问这个容器内的8080端口,即项目运行的端口;

在这里插入图片描述

这时,打开浏览器,输入服务器公网IP:8080/docker,敲回车。成功访问,没得问题。

在这里插入图片描述

总结

本文介绍了如何构建Docker自定义镜像

http://www.lryc.cn/news/321745.html

相关文章:

  • 一起学数据分析_2
  • 请解释Redis是什么?它有哪些主要应用场景?Redis支持哪些数据类型?并描述每种数据类型的特性和使用场景。
  • 在centos8中部署Tomcat和Jenkins
  • 机器学习模型—K means
  • QT UI设计
  • 前端小白的学习之路(CSS3 一)
  • 春暖花开,一起来看看2024年品牌春分海报吧!
  • golang面试题总结
  • BUGKU-WEB shell
  • 系统重构后,对项目定制开发的兼容性问题
  • Linux---基本操作命令之用户管理命令
  • excel 破解 保护工作簿及保护工作表
  • django-comment-migrate 模型注释的使用
  • Python学习:列表
  • C语言每日一题—判断是否为魔方矩阵
  • Java数组新手冷知识
  • Linux——程序地址空间
  • Linux编程4.9 网络编程-建立连接
  • 威胁检测与分析--云图大师
  • Python基础入门 --- 7.函数
  • 第4周 Python程序流程控制刷题
  • 高亮搜索中的关键字怎么实现
  • OpenCV系列文章目录(持续更新中......)
  • 【机器学习系列】M3DM工业缺陷检测部署与训练
  • 西瓜书机器学习AUC与ℓ-rank(loss)的联系理解以及证明(通俗易懂)
  • 渔业安全生产综合管理指挥系统-航迹数据优化方案
  • 发现数据之美:探索数据可视化的艺术与技术
  • Flutter项目组件模块化开发的实践与搭建
  • Flink:使用 Faker 和 DataGen 生成测试数据
  • Json格式解析