首页 > 其他 > 详细

6、DockerFile文件

时间:2019-11-24 14:37:19      阅读:85      评论:0      收藏:0      [点我收藏+]

1、DockerFile解析

技术分享图片

1、是什么

Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。

(1)构建三步骤
编写Dockerfile文件
docker build
docker run

(2)文件什么样???

docker images

centos 199MB

它的dockerfile如何描写的

 

以我们熟悉的CentOS为例 
https://hub.docker.com/_/centos/

https://github.com/CentOS/sig-cloud-instance-images/blob/f32666d2af356ed6835942ed753a4970e18bca94/docker/Dockerfile

技术分享图片

 

scratch 基础镜像类

maintainer  作者+邮箱

压缩包

label 说明

默认cmd shell: bin/bash

 

docker run -it centos 

docker run -it centos /bin/bashc

 

90后拼的是执行力与自我驱动力

不会怎么办,立刻现在马上去学

不懂怎么办,立刻现在马上去做

做着做着感觉就来了

 

2、DockerFile构建过程解析

类的加载顺序

技术分享图片

1、Dockerfile内容基础知识


1:每条保留字指令都必须为大写字母且后面要跟随至少一个参数

2:指令按照从上到下,顺序执行
3:#表示注释
4:每条指令都会创建一个新的镜像层,并对镜像进行提交

字指令 FROM等

技术分享图片

 

 


Docker执行Dockerfile的大致流程
(1)docker从基础镜像运行一个容器
(2)执行一条指令并对容器作出修改
(3)执行类似docker commit的操作提交一个新的镜像层
(4)docker再基于刚提交的镜像运行一个新容器
(5)执行dockerfile中的下一条指令直到所有指令都执行完成

FROM scratch
MAINTAINER The CentOS Project <cloud-ops@centos.org>
ADD c68-docker.tar.xz /
LABEL name="CentOS Base Image"     vendor="CentOS"     license="GPLv2"     build-date="2016-06-02"

# Default command
CMD ["/bin/bash"]

小总结

。。。。。。。。。。。。。。。。。 

 

 

3、DockerFile体系结构(保留字指令)


FROM
基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER
镜像维护者的姓名和邮箱地址
RUN
容器构建时需要运行的命令

执行的linux的命令   

echo ‘success............’

技术分享图片

 

 

EXPOSE
当前容器对外暴露出的端口

技术分享图片

 

 


WORKDIR
指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点

技术分享图片

 

 没有指定,默认为 /

技术分享图片

 

 


ENV
用来在构建镜像过程中设置环境变量

.....

user_path

 


ADD
将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包

COPY
类似ADD,拷贝文件和目录到镜像中。 将从构建上下文目录中 <源路径> 的文件/目录复制到新的一层的镜像内的 <目标路径> 位置

ADD比copy强大,add是copy+解压缩


COPY src dest
COPY ["src", "dest"]

 


VOLUME
容器数据卷,用于数据保存和持久化工作

技术分享图片

 

 


CMD
指定一个容器启动时要运行的命令
Dockerfile 中可以有多个 CMD 指令,但只有最后一个生效,CMD 会被 docker run 之后的参数替换

ENTRYPOINT
指定一个容器启动时要运行的命令
ENTRYPOINT 的目的和 CMD 一样,都是在指定容器启动程序及参数

考点:CMD和ENTRYPOINT

CMD只有最后一个生效,相当于 替换 echo 1 > test.txt

自己定义的dockerFile会把docker内部的dockerfile中的cmd命令替换

技术分享图片

 

 CMD 会被 docker run 之后的参数替换???等会讲

 

ENTRYPOINT  相当于追加命令,都要执行    echo 2 >> test.txt

 

 


ONBUILD
当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发

子镜像运行中,如果父镜像想干点收尾的工作,可以填写这个

 


小总结

。。。。

 

上面的理论知识。官网都有,官方文档翻译过来的

学了,你来给我写个,有屁用,怎么用

看看官网就会,翻翻源码

 

尚硅谷,案例来介绍,这些所有的字指令

重点是:

现在谁没有学习能力

重要的是怎么练,运用知识的能力

 

不要浮躁,认认真真

 

4、案例


Base镜像(scratch)
Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的
自定义镜像mycentos
编写
Hub默认CentOS镜像什么情况
准备编写DockerFile文件
myCentOS内容DockerFile
构建
docker build -t 新镜像名字:TAG .
运行
docker run -it 新镜像名字:TAG
列出镜像的变更历史
docker history 镜像名
CMD/ENTRYPOINT 镜像案例
都是指定一个容器启动时要运行的命令
CMD
Dockerfile 中可以有多个 CMD 指令,但只有最后一个生效,CMD 会被 docker run 之后的参数替换
Case
tomcat的讲解演示
docker run -it -p 8888:8080 tomcat ls -l
ENTRYPOINT
docker run 之后的参数会被当做参数传递给 ENTRYPOINT,之后形成新的命令组合
Case
制作CMD版可以查询IP信息的容器
crul命令解释
问题
如果我们希望显示 HTTP 头信息,就需要加上 -i 参数
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
备注
验证
结合前述的容器卷将测试的web服务test发布
总体概述
web.xml
a.jsp
测试
小总结

6、DockerFile文件

原文:https://www.cnblogs.com/venicid/p/11922176.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!