DockerFile说明
Posted @Kerry~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DockerFile说明相关的知识,希望对你有一定的参考价值。
DockerFile是什么?
Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令(字指令)和参数构成的脚本。
案例:centos
自定义镜像构建三步骤
- 编写Dockerfile文件
- docker build -f dockerfile 绝对路径 -t 镜像名称 .(当前目录) 构建新镜像
- docker run -it 新镜像名称 (运行镜像)
DockerFile构建过程解析
编写Dockerfile需要懂得的基础知识
- 每条保留字指令都必须大学字母且后面要跟随至少一个参数
- 指令按照从上到下顺序执行
- #表示注释
- 每条指令都会创建一个新的镜像层,并对镜像进行提交(commit操作)
Docker执行Dockerfile的大致流程
- docker从基础镜像运行一个容器
- 执行dockerfile文件里面的指令,每执行一条指令对当前运行容器做出修改(dockerfile构建 - 数据卷案例)
- 执行类似docker commit的操作提交一个新的镜像层
- docker再基于刚提交的镜像运行一个新的容器
- 执行dockerfile中的下一条指令直到所有指令都执行完成
Dockerfile文件案例
构建属于自己的centos镜像 的dockerfile文件 #volume test FROM centos #表明来源于基础镜像是centos #对基础惊喜运行容器进行修改并且执行commit提交操作 VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"] CMD echo "finished,------success1" #输出指令 CMD /bin/bash
总结:
dockerfile ---> build ---> Docker镜像(image) ---> 运行(run) ---> docker 容器
DockerFile体系结构
编写Dockerfile文件的字指令
- FROM #基础镜像,当前新镜像是基于那个镜像的
- MAINTAINER #镜像维护者的姓名和邮箱地址(标注作者信息)
- ADD #将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和 解压tar压缩包。
- COPY #类似ADD,拷贝文件和目录到镜像中,但是不能解压。
将从构建上下文 目录<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
COPY src(源文件路径) dest(目的路径)
COPY ["src","dest"]
(两种方式)
- RUN #容器构建时需要运行的命令
- ONBUILD #当父类定义了该方法,子类镜像构建继承该父类方法时,被触发
- WORKDIR #指定在创建容器后,终端默认登录进来的工作目录。例如:~
- CMD #指定一个容器启动时要运行的命令。只有最后一个生效,证明CMD指 令会被互相覆盖。Dockerfile中可以有多个CMD指令,但只有最后一个 生效,CMD会被docker run 之后的参数替换。
- ENV #在构建镜像过程中设置环境变量
- EXPOSE #当前容器对外暴露出的端口 例如:80 redis 6379等
- VOLUME #容器数据卷,用于数据保存和持久化工作、数据共享
- ENTRYPOINT #指定一个容器启动时要运行的命令。类似CMD 但是唯一不同就是 不会覆盖,它类似追加操作。
- USER #设置使用的用户组
- .dockerignore 忽略文件(类似git那个 不常用)
实战案例
以上是关于DockerFile说明的主要内容,如果未能解决你的问题,请参考以下文章