13-5 Dockerfile讲解及演示

Posted wangjunwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了13-5 Dockerfile讲解及演示相关的知识,希望对你有一定的参考价值。

首先需要编写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循环。
技术图片
以上就是解读。下面再来运行下

结束

 

以上是关于13-5 Dockerfile讲解及演示的主要内容,如果未能解决你的问题,请参考以下文章

docke--Dockerfile构建docker镜像

使用 Dockerfile 创建镜像

Docke--Dockerfile实践

Docker小白到实战之Dockerfile解析及实战演示,果然顺手

Docke--Dockerfile 构建LNMP环境

Docker 学习笔记总结