07-Dockerfile详解(一)

回顾一下之前的内容,镜像的生成途径:
基于容器:
Dockfile文件:就是一个包含用户命令的文本文件,Dockerfile的命令不过区区20多个。
在这里插入图片描述

Dockerfile Format

  • 注释信息: comment,以#开头;
  • 指令参数:instruction arguements;
  • 顺序执行:Dockerfile里面的文本指令,都是自上而下,依次执行;
  • 除了注释信息,第一行必须是FROM指令,他定义了当前制作的镜像是以哪个base image。

Dockerfile 工作模式

  • 工作目录:基于Dockerfile文件制作镜像,必须有专用的工作目录;
  • Dockerfile文件:在工作目录中Dockerfile文件名,首字母必须大写;
  • 其他文件:基于Dockerfile做镜像时,所需要的其他文件必须放在工作目录下面;
  • dockeringore: docker忽略的文件,在这个文件里面,一行一个,写进这个文件里面,docker在打包镜像时,会忽略,写的是文件路径;
  • 制作镜像:接下来就可用docker build来制作image。

小知识

  • ${Vars:-word}:表示Vars未设置或为空时,给这个变量赋word值;
  • ${Vars:+word}: 表示如果Vars设置了且不为空,给这个变量赋word值;

Dockerfile instructions

FROM

  • 为最重要的指令,且必须为Dockerfile文件非注释的第一行,用于为镜像构建过程中指定base image,后续所提供的指令都是基于该镜像所提供的环境执行的;

  • 实践中,docker build的时候会首先在docker本地查找该镜像,如果本地不存在,就从docker Hub上面找;

  • 语法: FROM [:tag]。 其中repository为base 镜像的名称;tag为base image的标签,可省略,默认为latest。

MAINTANIER(已被废弃,被LABEL替代)

  • 用于写镜像制作者的个人信息。

LABEL

  • 在最新的docker版本中,已经替换成LABEL,给这个镜像指定各种各样的元数据,语法格式为键值对,key=value,…;

COPY

  • 从当前镜像工作目录中的文件复制到容器中;

  • 语法格式:COPY src dest或 COPY [“src”,”dest”],一般源文件为相对路径在Dockerfile工作目录;目的文件为绝对路径,目标路径不存在时,会自动创建;

  • 准则:如果为一个目录,那么该目录下面的文件或递归子目录将会被复制过去,自身目录不会被复制过去;dest作为目录时候,必须以/结尾;

    扫描二维码关注公众号,回复: 11537111 查看本文章
  • 复制文件:
    在这里插入图片描述
    Build Image
    在这里插入图片描述

  • 复制目录:

    比如要把Dockerfile下面的一个目录复制到docker容器里面; 在这里插入图片描述
    修改Dockerfile文件:
    在这里插入图片描述
    Build image:
    在这里插入图片描述

总结

上述为最简单的build image的过程,先简单感受下。在Dockerfile中一定要惜字如金,能合并在一条指令的尽量合并,因为,每一条指令都会在image上面增加一层,层数越多,对后面的维护越复杂,其他指令,在后续的博客中会继续详细分享。

猜你喜欢

转载自blog.csdn.net/weixin_38753143/article/details/99410097