5.DockerFile

作者: fougert | 来源:发表于2019-12-06 23:25 被阅读0次

1.简介

docekrfile是用来构建docker镜像的文件,是由一系列命令和参数构成的脚本
构建三步骤:docker file --> docker build --> docker run

2.DockerFile构建过程解析

2.1.基础语法:

每条保留字指令都必须为大写字母且后面要跟随至少一个参数
指令按照从上到下,顺序执行

每条指令都会创建一个新的镜像层,并对镜像进行提交

2.2.DockerFile执行大致流程

docker从基础镜像运行一个容器
执行一条指令并对容器作出修改
执行类似docker commit的操作提交一个新的镜像层
docker在基于刚提交的镜像运行一个新的容器
执行dockerfile中的下一条指令直到所有指令都执行完成

2.3.总结

DockerFile是软件的原材料
docker镜像是软件的交付品
docker容器可认为是软件的运行态

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

DockerFile 示例  

#centos7 dockerfile

FROM scratch
ADD centos-7-x86_64-docker.tar.xz /

LABEL org.label-schema.schema-version="1.0" \
    org.label-schema.name="CentOS Base Image" \
    org.label-schema.vendor="CentOS" \
    org.label-schema.license="GPLv2" \
    org.label-schema.build-date="20190801"

CMD ["/bin/bash"]

镜像保留字

FROM
    基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER
    镜像维护者的姓名和邮箱地址
RUN
    容器构建时需要运行的命令
EXPOSE
    当前容器对外暴露的端口
WORKDIR
    指定在创建容器后,终端默认登录的进来工作目录,一个落脚点
ENV
    用来在构建镜像过程中设置环境变量
ADD
    将宿主机目录下的文件拷贝进镜像并且ADD命令会自动处理URL和解压tar压缩包
COPY
    类似ADD,拷贝文件或目录到镜像中
    将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
   COPY src dest   
   COPY ["src","dest"]
VOLUME
    容器数据卷,用于数据保存和持久化工作
    VOLUME ["",""...]
CMD
    指定一个容器启动时要运行的命令
    DockerFile中可以有多个CMD命令,但只有最后一个生效,CMD会被docker run 之后的参数替换
ENTRYPOINT
    指定一个容器启动时要运行的命令
    ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序和参数,ENTRYPOINT允许docker run 之后的参数
ONBUILD
    当构建一个被继承的DockerFile时运行命令,父镜像在被子继承后父镜像的Onbuild被触发


CMD /ENTRYPOINT 都是指定一个容器启动时要运行的命令
cmd:dockerFile中可以有多个cmd指令,但只有最后一个生效,cmd会被docker run之后的命令替换,
entrypoint: docker run之后的参数会被当做参数传递给entrypoint,之后形成新的命令组。

相关文章

  • 5.DockerFile

    1.简介 docekrfile是用来构建docker镜像的文件,是由一系列命令和参数构成的脚本构建三步骤:dock...

  • 5.Dockerfile指令详解

    Docker可以通过Dockerfile的内容紫东构建镜像。Dockerfile时一个包含创建镜像所有命令的文本文...

网友评论

    本文标题:5.DockerFile

    本文链接:https://www.haomeiwen.com/subject/asmegctx.html