关于Docker你不知道的那些事之DockerFile解析
是什么
定义:
DockerFile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。
构建三步骤
- 编写DockerFile文件
- docker build
- docker run
文件什么样
DockerFile构建过程解析
Dockerfile内容的基础知识
- 每条保留字指令都必须为大写字母且后面要跟随至少一个参数
- 指令按照从上到下,顺序执行
- #表示注释
- 每条指令都会创建一个新的镜像层,并对镜像进行提交
Docker执行DockerFile的大致流程
- docker从基础镜像运行一个容器
- 执行一条指令并对容器作出修改
- 执行类似docker commit的操作提交一个新的镜像层
- docker再基于刚刚提交的镜像运行一个新容器
- 执行dockerfile中的下一条指令知道所有指令都执行完成
小总结
- DockerFile:需要定义一个DockerFile,DockerFile定义了进程需要的一切东西。DockerFile涉及的内容执行包括代码或是文件、环境变量、依赖包、运行时环境、动态链接库、操作系统的发行版、服务进程和内核进程(当应用进程需要和系统服务和内核进程打交道,这时需要考虑如何设计namespace的权限控制)等等
- Docker镜像,在用DockerFile定义一个文件之后,docker build时会产生一个Docker镜像,当运行Docker镜像时,会真正开始提供服务。
- Docker容器,容器是直接提供服务的。
DockerFile 体系结构
- FROM:基础镜像,当前新镜像是基于那个镜像的
- MAINTAINER:镜像维护着的姓名和邮箱地址
- RUN:容器构建时需要运行的命令
- EXPOSE:当前容器对外暴露的端口
- WORKDIR:指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点
- ENV:用来在构建镜像过程中设置环境变量
- ADD:将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
- COPY:类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置。COPY src dest 和 COPY [“src”,“dest”]
- VOLUME:r容器数据卷,用于数据保存和持久化工作。
- CMD:指定一个容器启动时要运行的命令
DockerFile中可以有多个CMD指令,但只有最后一个生效,CMD会被Docker run之后的参数替换
- ENTRYPOINT:指定一个容器启动时要运行的命令
ENTRYOINT的目的和CMD一样,都是在指定容器启动程序及参数
- ONBUILD:当构建一个被继承的DockerFile时运行命令,父镜像在被子继承后父镜像的onbuild被触发
- 小总结:
案例
Base镜像(scratch)
Docker hub中99%的镜像都是通过在base镜像中安装和配置需要的软件构建出来的
自定义镜像mycentos
+ 编写
-
hub默认Centos镜像什么情况
-
准备编写DockerFile文件
vim Dockerfile
- 1
-
myCentOS内容DockerFile
+ 构建
docker build -t 新镜像名字:TAG
+ 运行
docker run -it mycentos:1.3
+ 列出镜像的变更历史
CMD/ENTRYPOUINT镜像案例
-
都是指定一个容器启动时要运行的命令
-
CMD
-
Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换
-
Case:Tomcat的讲解演示
-
-
ENTRYPOINT
-
docker run之后的参数会被当做参数传递给ENTRYPOINT,之后形成新的命令组合
-
Case:制作CMD版可以查询IP信息的容器:crul命令解释
-
WHY
-
制作ENTROYPOINT版查询IP信息的容器
-
自定义镜像Tomcat9
-
mkdir -p /zzyyuse/mydockerfile/tomcat9
-
在上述目录下touch c.txt
-
将jdk和tomcat安装的压缩包复制上一步目录
- apache-tomcat-9.0.8.tar.gz
- jdk-8u171-linux-x64.tar.gz
-
在/zzyyuse/mydockerfile/tomcat9目录下新建Dockerfile文件
-
构建
-
run
docker run -d -P 9080:8080 --name myt9 -V /zzyyuse/mydockerfile/ tomcat9/ test:/usr/loca1/ apache - tomcat-9.0.8/webapps/test -v /zzyyuse/mydockerfile/ tomcat9/ tomcat9logs/ : /usr/local/ apache tomcat-9.0. 8/logs - -privileged-true zzyytomcat9
- 1
- 验证
- 结合前述的容器卷将测试的web服务test发布
-
总体概述
-
web.xml
-
a.jsp
-
总结
文章来源: blog.csdn.net,作者:轻狂书生FS,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/LookForDream_/article/details/111479554
- 点赞
- 收藏
- 关注作者
评论(0)