Docker自定义镜像

2023-09-22 11:12:00

一、镜像结构

镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。
在这里插入图片描述
镜像是分层结构,每一层称为一个Layer

  • BaseImage层:包含基本的系统函数库、环境变量、文件系统
  • 其它:在BaseImage基础上添加依赖、安装程序、完成整个应用的安装和配置
  • Entrypoint:入口,是镜像中应用启动的命令

二、什么是Dockerfile

Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。
Dockerfile的第一行必须是FROM,从一个基础镜像来构建。
在这里插入图片描述更新详细语法说明,请参考官网文档: https://docs.docker.com/engine/reference/builder

案例1:基于Ubuntu镜像构建一个新镜像,运行一个java项目
步骤1:新建一个空文件夹docker-demo
步骤2:拷贝docker-demo.jar文件到docker-demo这个目录
步骤3:拷贝jdk8.tar.gz文件到docker-demo这个目录
步骤4:拷贝Dockerfile到docker-demo这个目录
步骤5:进入docker-demo
步骤6:运行命令:
dockerfile内容:
在这里插入图片描述

docker build -t javaweb:1.0 . # .是指dockerfile所在的目录位置

案例二:基于java:8-alpine镜像,将一个Java项目构建为镜像
实现思路如下:

  • 新建一个空的目录,然后在目录中新建一个文件,命名为Dockerfile
  • 拷贝docker-demo.jar到这个目录中
  • 编写Dockerfile文件:
  • 基于java:8-alpine作为基础镜像
  • 将app.jar拷贝到镜像中
  • 暴露端口
  • 编写入口ENTRYPOINT
  • 使用docker build命令构建镜像
  • 使用docker run创建容器并运行
    这里相比案例一,dockerfile文件变成下图:
    在这里插入图片描述

因此这里的基础镜像可以是基本操作系统,如Ubuntu。也可以是其他人制作好的镜像,例如:java:8-alpine,可以省去重复层的构建,更加方便。

更多推荐

Bigemap在市政工程设计给排水行业的应用场景?

去年单位采购的,今年11月份才分配给我使用。使用场景:现场定位:通过我们电脑导入cad图纸数据,根据需求可以画一些简单的示意路线,发送到手机进行现场比对,最后会在cad里面加入管道设计方案。去年单位采购的,今年11月份才分配给我使用。使用场景:现场定位:通过我们电脑导入cad图纸数据,根据需求可以画一些简单的示意路线,

Vue的详细教程--用Vue-cli搭建SPA项目

Vue的详细教程--用Vue-cli搭建SPA项目1.Vue-cli是什么2.什么是SPA项目1.vueinitwebpackspa2.一问一答模式2:运行完上面的命令后,我们需要将当前路径改变到SPA这个文件夹内,然后安装需要的模块此步骤可理解成:maven的web项目创建成功后,修改pom文件添加依赖3.启动并访问

MYSQL--索引

目录一、索引的概念:二、索引的作用:三、索引的缺点:四、创建索引的原则依据:五、索引的分类和创建:1.普通索引:2.唯一索引:3.主键索引:4.组合索引:5.全文索引:六、查看删除索引:1.查看索引:2.删除索引:一、索引的概念:索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址(类似于

SpringSecurity 初始化解析

文章目录前言加载SpringSecurity配置解析配置SpringSecurity解析器security:http解析FilterChainProxy的注册过程创建SpringSecurity过滤器总结前言通过上文分析知道了SpringSecurity对一个请求的具体处理流程。不知道大家是否跟我一样都有几个疑问:Fi

已知我有一个表格里有编号状态和名称的列,如何转换为目标样式?

点击上方“Python爬虫与数据挖掘”,进行关注回复“书籍”即可获赠Python从入门到进阶共10本电子书今日鸡汤此臣所以报先帝而忠陛下之职分也。大家好,我是皮皮。一、前言前几天在Python最强王者交流群【黑科技·鼓包】问了一个Python自动化办公的问题,一起来看看吧。请教一下PANDA库的问题:已知我有一个表格里

字符串(字符数组)的各种操作功能

利用C语言编程平台以及所学的编程知识,完成以下工作:采用菜单形成,通过菜单项(1;2;3;......)等选择方式,分别实现以下对字符串(字符数组)的各种操作功能:初始化字符串(字符数组)A[],B[],C[]等,并键盘录入,要求字符串(字符数组)以’\0’为结束标志;调用自己编写的函数intlength(CharA[

JS基础语法

JS是一门面向对象的编程语言,运行在客户端的脚本语言,可以基于Node.js进行服务器端编程JS的作用:表单动态校验网页特效服务端开发浏览器执行JS:浏览器分为两部分:渲染引擎和JS引擎渲染引擎用来解析HTML和CSS,如chrome浏览器的Blink/Webkit,Firefox的Gecko。JS引擎用来读取网页的J

每日一练 | 华为认证真题练习Day1

Day1华为认证中级考试真题1、IP报文中用Tos字段进行QOS标记,Tos字段中是使用前6bit来标记DSCP的。A.正确​B.错误2、传统的丢包策略采用尾部丢弃(Tail-Drop)的方法,这种丢弃方法会导致TCP全局同步现场。A.正确B.错误3、下列选项中,属于AgileController的业务编排的亮点的是:

JavaScript函数this指向

一、this的指向规则1.this到底指向什么呢?我们先来看一个让人困惑的问题:定义一个函数,我们采用三种不同的方式对它进行调用,它产生了三种不同的结果//定义函数functionfoo(name){console.log("foo函数:",this)}//1.方式一:直接调用//foo()//2.方式二:通过对象调起

Revopoint的3D输出格式及转换工具

在CES展会期间,许多参观者向我们询问与我们的3D扫描仪相关的问题。最常见的问题包括我们的扫描仪导出的文件格式,以及该文件是否与3D打印机兼容?因此,我们决定回答这些问题,并在本文中对常见的3D文件格式进行一些简要介绍。计算机文件记录和存储数据,包括文本、图片、视频、计算机程序或其他类型的数据。就3D文件而言,顾名思义

代理IP在各种业务情境中的应用和优势

随着现代互联网的迅速发展,代理IP已成为一种广泛应用于各行业的网络技术。特别是在数据采集、网站建设、安全维护等领域,代理IP的应用越来越受到重视。那么,具体有哪些业务会使用到代理IP呢?我们一起来看一看。1.网络爬虫和数据采集网络爬虫和数据采集是代理IP的主要应用场景之一。大规模数据采集由于需要频繁对目标网站发送请求,

热文推荐