Dockerfile自定义镜像

Dockerfile自定义镜像 - 基于 java:8-alpine 镜像,将一个Java项目构建为镜像 目录 一、前置知识1.镜像结构2.Dockerfile是什么二、自定义一个 java 项目镜像1.创建一个空目录,在这个空目录中创建一个文件,命名为 DockerFile,最后将 java 项目打包成 jar 包,放到这个目录中2.编写 Dockerfile 文件3.使用 docker build 构建为一个镜像4.使用 docker run 运行镜像我们知道镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成,那么它的层次结构是怎么的呢?镜像是分层结构,每一层称为一个LayerDockerfil 阅读详情

1、Dockerfile简介

dockerfile 是一个文本格式的配置文件, 用户可以使用 Dockerfile 来快速创建自定义的镜像,
另外,使用Dockerfile去构建镜像好比使用pom去构建maven项目一样,有异曲同工之妙

在这里插入图片描述

dockerfile基本结构
Dockerfile 由一行行命令语句组成, 并且支持以#开头的注释行,一般而言, Dockerfile 主体内容分为四部分:
基础镜像信息
维护者信息
镜像操作指令
容器启动时执行指令

部分命令
基础镜像信息FROM
维护者信息MAINTAINER
镜像操作指令RUN、(COPY/ADD)、EXPOSE、WORKDIR、ONBUILD、USER、VOLUME等
容器启动时执行指令CMD、ENTRYPOINT

2、Docker制作jdk镜像(案例)

启动虚拟机,进入centos
1.创建文件夹上传jdk的安装包,和在同级目录下编写Dockerfile文件
#创建镜像目录

/hsl_docker/jdk为我的基础镜像目录

 mkdir –p /hsl_docker/jdk

在这里插入图片描述
#安装lrzsz命令

  yum install lrzsz -y

在这里插入图片描述

#选择文件进行上传

  rz

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
#注意d是大写

  touch Dockerfile 

在这里插入图片描述

2.编写 Dockerfile 文件

	#1.指定基础镜像,并且必须是第一条指令
FROM centos:7    

#2.指明该镜像的作者和其电子邮件
MAINTAINER hsl "hsl@qq.com"

#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
WORKDIR /hsl_docker/jdk

#4.一个复制命令,把jdk安装文件复制到镜像中,语法:ADD <src>... <dest>,注意:jdk*.tar.gz使用的是相对路径
ADD jdk-8u221-linux-x64.tar.gz /hsl_docker/jdk/

#5.配置环境变量
ENV JAVA_HOME=/hsl_docker/jdk/jdk1.8.0_221
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH           

#容器启动时需要执行的命令
#CMD ["java","-version"]

在这里插入图片描述

3.执行Dockerfile文件,初次依赖镜像的时候会下载相应镜像

  docker build -t jdk8:v1.0 .

在这里插入图片描述

  注1:-t  jdk8:v1.0  给新构建的镜像取名为 jdk8, 并设定版本为 v1.0
  注2:注意最后有个点,代表使用当前路径的 Dockerfile 进行构建 

4.查看镜像

docker images

在这里插入图片描述
5.创建并启动容器

docker run -it --name 别名 镜像ID

6.检查是否有问题
java -version
在这里插入图片描述

dockerfile实践经验

  1. 精简镜像用途:尽量让每个镜像的用途都比较集中单一,避免构造大而复杂、多功能的镜像
  2. 选用合适的基础镜像:容器的核心是应用,选择过大的父镜像(如Ubuntu系统镜像)会造成最终生成应用镜像的膝肿,
    推荐选用瘦身过的应用镜像或者较为小巧的系统镜像(alpine)
Docker自定义镜像-Dockerfile Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。 镜像就是一个分层结构,每一层称之为一个Layer BaseImage层:包含基本的系统函数库,环境变量,文件系统。 Entrypoint层:入口,是镜像中应用启动的命令。 其他:在BaseImage的基础上,添加依赖,安装程序,完成整个应用的安装和配置... 阅读详情

相关推荐

docker之自己制作jdk镜像

一,下载想要制作的镜像的对应jdk(自行下载),本文使用jdk17(因为自己的springboot项目时在jdk17下开发的,悲!,再加上没有在官网上找到对应镜像,只好自己做了)二,编写dockerfile。

m0_62155641的博客 2361

docker制作自定义版本的jdk镜像

把下载好的jdk压缩包上传至服务器,目录和Dockerfile在一起。注意最后有一个点,代表用当前的目录下的Dockerfile文件。1、下载jdk版本,这里以jdk1.8.0_381为例。2、创建Dockerfile文件。3、完成jdk镜像制作。

星星的博客 2759

Docker-使用Dockerfile自定义镜像

Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。1.Dockerfile的本质是一个文件,通过指令描述镜像的构建过程2.Dockerfile的第一行必须是FROM,从一个基础镜像来构建3.基础镜像可以是基本操作系统,如Ubuntu。也可以是其他人制作好的镜像,例如:java:8-alpine。

lemonzjk的博客 1900

Docker自定义镜像(制作JAVA镜像)

docker 自定义镜像

weixin_43516605的博客 2451

告别版本过低提示!微信3.9登录修复与聊天记录无缝迁移全攻略

本文详细解析了微信3.9版本过低提示的根源,并提供了完整的修复方案和聊天记录迁移指南。通过专用修复工具绕过版本检测,以及新旧版本聊天记录目录对比,帮助用户实现无缝迁移。特别提醒备份重要数据,确保操作安全。

weixin_42535461的博客 3108

STM32 超声波模块输入捕获测距(标准库)

通道2设置为下降沿触发,触发瞬间会将CNT的记录到CCR2中,由于上升沿触发时已经将CNT置零所以此时的CNT的值就是高电平的持续时间。通道1设置为上升沿触发,触发的瞬间会将CNT的值记录到CCR1里面,同时设置通道1触发带有从模式,并把从模式设置为置零CNT。超声波传感器模块上面通常有两个超声波元器件,一个用于发射,一个用于接收。电路板上有四个引脚:VCC、GND、Trig(触发)、Echo(回应)。输入捕获原理可以看看这位大佬,感觉写的很清楚,工作电压与电流:5V,15mA。感测角度:不小于15度。

qq_62425900的博客 2082

【docker】Dockerfile自定义镜像

常见的镜像在DockerHub就能找到,但是我们自己写的项目就必须自己构建镜像了。而要自定义镜像,就必须先了解镜像的结构才行。

m0_62645012的博客 1728

在STM32上运行小波变换及神经网络算法——(一)单片机中小波算法编写

在单片机上实现离散小波变换的C代码,通过确定信号长度、小波分解层数、小波基名称后进行编写,并改写成了方便调用的结构体格式。

weixin_45400202的博客 986

利用Dockerfile构建自定义镜像

当一个系统开发完成,需要将系统打包为一个镜像文件,让docker能够运行该镜像,成为一个可以被访问的容器。上述操作可以通过自定义镜像的方式来实现,本文章基于VMware虚拟机中安装的Centos7操作系统来完成。

每天学习一点点 1109

SCI一区论文投稿终极技巧:Expert Systems With Applications;Knowledge-Based Systems

投稿计算机1区论文(如KBS、ESWA)的核心技巧包括:1)关键词选择需平衡范围与相关性,避免过细或过泛;2)研究内容聚焦单一核心创新点,避免内容分散;3)必须设计消融实验量化创新点的贡献;4)公开实验代码和数据集,确保可验证性;5)合理使用AI工具仅辅助写作,核心内容需自主完成;6)实验数据必须真实可靠。特别强调1区期刊对创新性和实验严谨性的高要求,需避免常见拒稿原因如内容分散、缺乏验证等。这些策略可提高投稿成功率,但前提是研究本身具有实质性创新。

ZhangJiqun&191cm&85kg 1151

小工匠聊架构-分布式场景下的并发幂等性常见的解决方案

Pre 我们来回顾下单体时代 单体时代,应用部署在一台主机上,可以使用JVM级别的锁来控制并发请求 。 随着应用规模的不断扩大,集群化或者微服务化的分布式部署越来越普及,每个应用都是一个单独的JVM应用,所以单体时代的这种处理方式已经无法满足当前架构下的业务需求了。 JVM级别的锁已经无法满足跨进程之间访问控制了,进而演化出来了分布式锁。 分布式锁 能否解决幂等性问题? 分布式锁解决什么问题? 简言之: 解决跨进程间无法共享本地资源的问题 ,解决的是分布式场景下并发访问的问题。 为什么需要确保并发.

小工匠 2万+

深入理解 Dockerfile 构建自定义镜像

Dockerfile 是构建自定义 Docker 镜像的核心工具之一。通过 Dockerfile,可以从基础镜像出发,一步步构建出符合项目需求的镜像。本文将详细介绍 Dockerfile 的基本指令及实际操作步骤。虽然 Docker Hub 上有各种官方和第三方镜像,但在实际项目中,我们常需要在基础镜像上安装额外的软件或配置环境变量。此时,使用 Dockerfile 构建自定义镜像就显得尤为重要。指令说明示例FROM指定基础镜像ENV设置环境变量COPY拷贝文件到镜像的指定目录RUN。

私聊前往站内信:https://i.youkuaiyun.com/#/msg/chat/weixin_44976692 1万+

使用CloudCompare和CANUPO进行点云分类的编程指南

在本文中,我们将介绍如何使用CloudCompare和CANUPO库进行点云分类的编程。CloudCompare是一款功能强大的开源点云处理软件,而CANUPO是一个用于点云分类和分割的C++库。这只是一个简单的点云分类示例,CANUPO库还提供了其他更高级的功能和算法,以满足各种点云分类需求。该函数接受点云数据、地面点掩码和非地面点掩码作为输入,并将分类结果存储在这两个掩码向量中。完成安装后,我们可以开始编写点云分类的代码。最后,我们遍历点云数据,并根据地面点和非地面点的掩码将结果打印出来。

ByteWhisper的博客 1058

SpringCloud微服务 【实用篇】| Dockerfile自定义镜像、DockerCompose

SpringCloud微服务 【实用篇】| Dockerfile自定义镜像、DockerCompose

m0_61933976的博客 1万+

【智能车Code review】——拐点的寻找

CROSSROAD:十字拐点 ROUNDISLAND:环岛拐点 rightfindflag[i]:表示第i行的右线是否被找到,1为找到,0为没有找到 flag_find_huan_rightdown_point :找到环岛右下拐点标志 flag_find_huan_rightmiddle_point:找到环岛右中拐点标志 找拐点的思路:观察一段数据中数据点的走向趋势,并且保证这段数据是准确的。在摄像头畸变比较严重的情况下这种方法不再适用 关于函数的调用请见:https://blog.youkuaiyun.com/qq.

hanhan的博客 1万+

mapbox高阶,加载倾斜摄影

本文详细介绍如何基于mapbox-gl v3.8.0版本实现倾斜摄影的加载,亲测可用。希望能帮助到您。一起学习,加油!加油!

我哎GIS博客 342

Dockerfile自定义镜像以及案例分析

常见的镜像在DockerHub就能找到,但是我们自己写的项目就必须自己构建镜像了。本文从镜像结构、Dockerfile语法等方面详细介绍了自定义镜像的方法,并附带两个实战demo案例

qq_45858191的博客 669

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Docker:DockerFile自定义镜像

1.1.镜像结构 1.2.Dockerfile语法 1.3.构建Java项目 1.3.1.基于Ubuntu构建Java项目 1.3.2.基于java8构建Java项目 1.4.小结

我是程序员Amin,关注我,带你学习有趣的计算机知识 876

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

03. 自定义镜像 & Dockerfile

在前面章节中docker部署的nginx或者tomcat都是镜像仓库中已有的镜像,或是别人已经开发好的镜像。那么,在实际项目中,我们除了使用已有的镜像外,还有我们自己构建的镜像,比如项目的基础服务应用等等。

有一只柴犬的专栏 1419

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

在docker中使用dockerfile实现自定义镜像

在使用docker技术的时候,很多时候官方提供的基础镜像是无法满足实际要求的,因为我们可以通过dockerfile文件在基础镜像上自定义新的镜像满足实际要求,接下来我们就通过实验搭建一个容器,使用的镜像是我们通过dockerfile自定义的镜像 实验目的:通过基础镜像centos制作nginx镜像,搭建nginx服务的容器 1.首先通过dockerfile制作基于基础镜像的初始化镜像 1.1 准备目录结构,下载镜像并初始化系统 #按照业务类型或系统类型等方式划分创建目录环境,方便后期镜像比较多的时候进行分类

llliuhuiii的博客 1122

Docker--Dockerfile自定义镜像

dockerfile自定义镜像

qq_45672041的博客 1628

使用Dockerfile自定义Docker镜像

Dockerfile就是可以让我们个性化定制Docker镜像,来满足实际工作中各式各样的需求

warybee 1397

dockerfile自定义镜像

总结:做为容器启动时执行命令的语句,一般情况下二者是通用的,但是在传参的情况下,需要加上CMD,如果没有特殊的操作(传参),写一个CMD或者ENTRYPOINT即可,二者不要同时存在。:包含了一个完整的文件系统(操作系统),包括了所有的文件和目录,以及相关的权限和用户等等信息,运行容器时,整个根文件系统就会整个被使用,作为应用运行的环境。:主要是用来传参,是用户传递的参数,比如:/bin/bash就是ARG。3.基于基础镜像,创建好了容器之后,在容器内部进行定制化的操作,然后导出成镜像,下次继续使用。

Hai990218的博客 1609
上一篇: 宿主机与容器的数据交互
下一篇: alpine制作镜像
water_java
博客等级 码龄7年 9粉丝 124原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值