13-5dockerfile讲解及演示

wangjunwei wangjunwei     2022-12-10     426

关键词:

首先需要编写DokcerFile文件
技术图片
整体的三个步骤
技术图片

技术图片
FROM指令,相对比较特殊。docker里面的东西理论上都是运行在操作系统之上的。所以一般我们docker都会有基础镜像,这些基础镜像大部分都是以比如说centOS、linux啊、windows啊类似于这样的东西为主。 涉及到docker里面的分层。
技术图片
FROM的意思,这次我们的基础镜像是centos的版本是7.1.1503 这个是我们在官方镜像的仓库上找到的。
技术图片
官方镜像,直接搜索centos
技术图片

提供了很多的版本。这里选择的是7,因为当前主流的版本是7
技术图片

技术图片
ENV是设置环境变量
技术图片 
这里就是设置了语言版本是中文的utf-8。USE root表示使用的是哪一个用户。
技术图片
创建多级目录。就假设docker就是一个空的centos系统。分别创建了三个目录,分别叫做。jingzh/env、jiangzh/workspace、jiangzh/bin
RUN就表示后面是一个可执行命令,
技术图片
把当前文件夹下的jdk、jar包、shell脚本,分别拷贝在jiangzh/env/jdk.
前面是真实的地址,后面是docker里面的地址。
技术图片
这是准备好的文件。这些文件是在本地的仓做系统上,所以说上面的命令是复制本地的文件到docker的centos里
技术图片
ADD会把压缩包拷贝到jiangzh/env/jdk的目录下,同时给它解压。而COPY命令不负责解压,COPY就是拷贝到对应的目录下。
技术图片
JDK的安装除了解压,还需要定义我们的环境变量,就是我们的java_home.
所以我们用ENV定义环境变量:JAVA_HOME 后面对应的是值。
技术图片
上面的压缩包解压出来的名字就是jdk1.8.0_181
技术图片
同时在最后还做了一个env。在centos里面,我们需要把java_home的配置文件加到Path目录下才能生效。
技术图片
把我们的工作目录设置为/home/jiangzh .这一步的目录注意是我们docker镜像里面的目录。也就是默认这个docker进来,就在home/jiangzh这个目录下。
技术图片
暴露的端口号。docker和我们真实的操作系统之间本身是虚拟化隔离出来的。虽然它是轻量级的隔离,但是它也是隔离了。所以它自成一个小世界,里面跑了一个centos系统。这个centos里面,我们会跑各种各样的东西。它们都会有对应的端口号,如果你想要宿主机,我们管我们的物理机叫做宿主机。如果你想要宿主机可以访问到docker镜像里面的某一个端口,这个时候就必须把这个EXPOSE加上,这样docker就可以默认对外输出一个8761的端口,而我们的eurekaServer的端口默认就是8761
技术图片
把bin目录下所有的shell添加一个执行的权限。
技术图片
ENTRYPOINT:表示在dokcer启动的时候,我要做什么事情。下面这句话的意思是我要在docker启动的时候运行bin目录下的entrypoint.sh这个shell脚本。注意这个bin目录是一个相对路径。
技术图片
因为我的WORKDIR是在/home/jiangzh/这个目录下,所以相对目录就是在/home/jiangzh/目录下的bin
技术图片
而这个脚本呢 是上面复制进来的
技术图片

entrypoint

技术图片
标准的是shell脚本开头
技术图片

定义一个环境变量叫做 SHELL_BASE 就是我的根目录
技术图片
/home/jiangzh/bin目录,所有待执行的脚本其实都在这个目录下。
技术图片

在dockerfile里面,我们把eureka的jar包放在了workspace目录下
技术图片

相当于运行java-jar
技术图片
运行的是eurekaServer的jar包。最后面的&是结束符。
技术图片
紧接着,这里有个for循环。没修5秒休息一次 。这是个死循环。因为docker本身是轻量级的一个技术。它里面的主进程如果挂掉了,这个dokcer自然而然就退出了。所以我们不需要这个docker退出,哪怕它有问题也不希望它退出。
技术图片
所以把下面这个东西定义为了主线程,它会一直跑,从来不退出,所以docker不会轻易的退出。所以在这里定义了一个无线循环的for循环。
技术图片
以上就是解读。下面再来运行下

结束

 

javaweb——mvc基础框架讲解及代码演示(代码片段)

了解一下类似SpringMVC框架的底层实现相信看完这个短文,MVC你就懂了,还不懂请艾特我······带着问题去学习MVC到底是什么?如何实现MVC?开始!MVC是什么?Web开发在讲MVC之前,还是简要介绍一下Web... 查看详情

javaweb——mvc基础框架讲解及代码演示(代码片段)

了解一下类似SpringMVC框架的底层实现相信看完这个短文,MVC你就懂了,还不懂请艾特我······带着问题去学习MVC到底是什么?如何实现MVC?开始!MVC是什么?Web开发在讲MVC之前,还是简要介绍一下Web... 查看详情

[css权重!important]使用css的!important讲解及实例演示

/**楔子:  !important是CSS1就定义的语法,作用是提高指定样式规则的应用优先权(参见:W3.org的解释)。  语法格式{sRule!important},直接写在定义的最后面,如:p{color:green !important;}  注意:IE一直都不支持这个语法,而其他... 查看详情

[css弹性盒子模型box-flex及相关属性]box-flex属性弹性盒子模型讲解及实例演示

box-flex属性(和谐版)有道桌面词典显示,”flex”一词中文有“收缩”之意。不过,从此属性实际上产生的效果来看,无论怎样用“收缩”一词解释都显得很牵强。所以,这里,直接抛开字面意思,我们可以将... 查看详情

[css外边距margin]css中margin外边距合并问题讲解及实例演示

外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距;合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者外边距合并外边距合并(叠加)是一个相当简单的概念。但是,在实践中对网页进行布... 查看详情

[css伪对象添加content]css中content内容生成技术以及应用问题讲解及实例演示

小小的提醒在进入正题之前,我要做一回啰嗦的老女人,讲点可有可无无伤大雅的提醒:  仅在CSS可用的现代浏览器下起作用  不可通过DOM使用,它只是纯粹的表象最基本的–生成内容content使用如下:h2:before{content:"我是... 查看详情

[csszoom和transform属性]zoom和transform属性中scale属性值之间的区别讲解及实例演示

IE和Chrome等浏览器与zoom还在几年前,zoom还只是IE浏览器自己私有的玩具,但是,现在,除了FireFox浏览器,其他,尤其Chrome和移动端浏览器已经很好支持zoom属性了:zoom的字面意思是“变焦”,摄影的时候常用到的一个概念... 查看详情

8-19hystrix隔离演示及差异讲解

执行原来这个单次执行的效果这里打印了currentThread线程名称就是我们之前这里定义的。首先第一点,我们这里执行的线程池名称是生效的,打印出来的是MyThreadPool-1就是在我们的线程池MyThreadPool里面的第一个线程。修改线程模式... 查看详情

[css计数器counter]css中counter计数器(序列数字字符自动递增)应用问题讲解及实例演示

一、挖坟不可耻CSS计数器不是什么新鲜玩意了,早在10年春暖花开的时候,我写的“CSScontent内容生成技术以及应用”一文就要提到(见下图),不过当时是作为其中一员介绍。就像例行的溜新同事一样,虽然黑如焦炭的我... 查看详情

javaweb——mvc基础框架讲解及代码演示(代码片段)

了解一下类似SpringMVC框架的底层实现相信看完这个短文,MVC你就懂了,还不懂请艾特我······带着问题去学习MVC到底是什么?如何实现MVC?开始!MVC是什么?Web开发在讲MVC之前,还是简要介绍一下Web... 查看详情

androidapp蓝牙的设备配对音频传输点对点通信的讲解及实战(附源码和演示超详细)(代码片段)

需要源码请点赞关注收藏后评论区留言私信~~~一、蓝牙设备配对Android提供了蓝牙模块的管理工具,名叫BluetoothAdapter。下面是BluetoothAdapter类常用的方法说明:getDefaultAdapter:获取默认的蓝牙适配器。getState:获取蓝... 查看详情

企业级开源四层负载均衡解决方案--lvs

...目标1-1LVS导学视频试看1-2LVS课程概述第2章网络基础重点讲解网络核心基础知识,包括OSI七层模型、TCP四层模型、详解三次握手和四次挥手、数据包在服务器内部拆包解析全流程剖析、应用服务概念、iptables原理和常见命令编写2-1... 查看详情

androidapp人脸识别中借助摄像头和opencv实时检测人脸讲解及实战(附源码和演示超详细)(代码片段)

需要全部代码请点赞关注收藏后评论区留言私信~~~一、借助摄像头实时检测人脸与Android自带的人脸检测器相比,OpenCV具备更强劲的人脸识别功能,它可以通过摄像头实时检测人脸,实时检测的预览空间是JavaCameraView常... 查看详情

androidappgps获取定位经纬度和根据经纬度获取详细地址讲解及实战(附源码和演示超详细)(代码片段)

需要全部代码请点赞关注收藏后评论区留言私信~~~一、获取定位信息开启定位相关功能只是将定位的前提条件准备好,若想获得手机当前所处的位置信息,还要依靠下列的3种定位工具。(1)定位条件器Criteria定位... 查看详情

c语言从零基础到入门系列讲解及zznuoj官网题库练习(代码片段)

C语言从零基础到入门系列讲解及ZZNUOJ官网题库练习一、为什么要学习C语言二、C语言零基础9讲1.不要深究2.主函数3.变量与数组4.判断语句:ifelse5.输入与打印6.循环语句:for()和while()7.选择语句:switch()8.调用函数9.关键... 查看详情

androidapp低功耗蓝牙中扫描ble设备的讲解及实战(附源码和演示超详细)(代码片段)

需要源码请点赞关注收藏后评论区留言私信~~~一、扫描BLE设备传统蓝牙虽然历史悠久,但它的缺陷也很明显,包括但不限于下列几点:(1)需要两部设备配对之后才能继续连接,而且连接速度也慢;&#x... 查看详情

androidapp开发音量调节中实现拖动条和滑动条和音频管理器audiomanager讲解及实战(超详细附源码和演示视频)(代码片段)

需要源码请点赞关注收藏后评论区留下QQ~~~一、拖动条和滑动条拖动条SeekBar继承自进度条ProgressBar,它与进度条的不同之处在于,进度条只能在代码中修改进度值,不能由用户改变进度值,拖动条不仅可以在代码... 查看详情

无线通信篇|zstack协议栈cc2530zigbeezstack协议栈组网项目及详细讲解篇

 演示视频:https://www.bilibili.com/video/BV1Ew411o7Fp 物联网无线通信技术,ZigBee无线传感网络CC2530最大的特点就是一个拥有无线收发器(RF)的单片机,既能实现单片机功能,也能实现无线传输Zstack协议栈是ZigBee协议栈里的翘楚... 查看详情