DockerFile说明

Posted @Kerry~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DockerFile说明相关的知识,希望对你有一定的参考价值。

DockerFile是什么?

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

案例:centos

https://hub.docker.com/_/centos

 

自定义镜像构建三步骤

  1. 编写Dockerfile文件
  2. docker build -f dockerfile 绝对路径 -t 镜像名称 .(当前目录)     构建新镜像
  3. docker run -it 新镜像名称  (运行镜像)

DockerFile构建过程解析

编写Dockerfile需要懂得的基础知识

  1. 每条保留字指令都必须大学字母且后面要跟随至少一个参数
  2. 指令按照从上到下顺序执行
  3. #表示注释
  4. 每条指令都会创建一个新的镜像层,并对镜像进行提交(commit操作)

Docker执行Dockerfile的大致流程

  1. docker从基础镜像运行一个容器
  2. 执行dockerfile文件里面的指令,每执行一条指令对当前运行容器做出修改(dockerfile构建 - 数据卷案例)
  3. 执行类似docker commit的操作提交一个新的镜像层
  4. docker再基于刚提交的镜像运行一个新的容器
  5. 执行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文件的字指令

  1. FROM                        #基础镜像,当前新镜像是基于那个镜像的
  2. MAINTAINER            #镜像维护者的姓名和邮箱地址(标注作者信息)
  3. ADD                        #将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和                                    解压tar压缩包。
  4. COPY                     #类似ADD,拷贝文件和目录到镜像中,但是不能解压。
    将从构建上下文 目录<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
    COPY src(源文件路径) dest(目的路径)
    COPY ["src","dest"]
    (两种方式)
     
  5. RUN                          #容器构建时需要运行的命令
  6. ONBUILD                  #当父类定义了该方法,子类镜像构建继承该父类方法时,被触发
  7. WORKDIR                #指定在创建容器后,终端默认登录进来的工作目录。例如:~
  8. CMD                #指定一个容器启动时要运行的命令。只有最后一个生效,证明CMD指                           令会被互相覆盖。Dockerfile中可以有多个CMD指令,但只有最后一个                           生效,CMD会被docker run 之后的参数替换。
     
  9. ENV                #在构建镜像过程中设置环境变量
  10. EXPOSE                #当前容器对外暴露出的端口 例如:80 redis 6379等
  11. VOLUME                #容器数据卷,用于数据保存和持久化工作、数据共享
  12. ENTRYPOINT        #指定一个容器启动时要运行的命令。类似CMD 但是唯一不同就是                                   不会覆盖,它类似追加操作。
  13. USER                #设置使用的用户组
  14. .dockerignore 忽略文件(类似git那个 不常用)

实战案例

以上是关于DockerFile说明的主要内容,如果未能解决你的问题,请参考以下文章

DockerFile说明

Dockerfile内容说明

docker Dockerfile里使用的命令说明

构建 Dockerfile 使用非零代码 139 执行

Dockerfile中CMD命令和ENTRYPOINT 命令的说明

docker-compose:Dockerfile参数以及说明