dockerfile简介

制作镜像的基本方式有两种:

  1、基于container,使用docker commit来制作,这种方式功能不多,这里不做过多介绍

  2、基于dockerfile,使用docker build命令

dockerfile简介

  dockerfile仅仅是用于构建镜像的源码文本文件,包含构建镜像的所有命令,这些指令可以在命令行被调用。dockerfile的格式是 command args,我们使用#来注释一行命令。command命令默认情况下是不区分大小写的,但是一般我们写成大写。dockerfile在构建docker image时,dockerfile是顺序执行的,dockerfile的第一个非注释行应该以FROM开始,FROM定义了我们使用的基础镜像。dockerfile每执行一行指令都会产生一个新的镜像层。dockerfile中所有指令都必须是其下层启动的容器和已经执行的指令后的容器所支持的。

dockerfile制作镜像的目录格式

  基于dockerfile制作docker image ,必须要有专用的工作目录,在工作目录里面必须有Dockerfile文件,如果我们要在制作的镜像中打包很多文件,那么我们的文件必须保存在工作目录及其子目录下,不能保存在工作目录之外。如果我们使用在专用目录下新建一个目录保存要打包到镜像中的文件,为了方便我们可能会ADD(COPY)整个目录到docker image之中,如果其中有些文件是不需要的,我们可以在工作目录下增加dockerignore文件来定义不需要的文件目录。这样在打包时,自动不包含dockerignore中定义的文件。

dockerfile中的指令:

  FROM image :必须置于非注释行的第一行,指定要创建的image的基础镜像

  COPY key=value key=value ...:为镜像增减元数据matedata

  COPY src dest或COPY ["src", "src", ..., "dest"]:复制工作目录中的一个或者多个到镜像文件系统中的指定目录,一般src是相对路径,相对于工作目录,dest一般是绝对路径(如果是相对路径,则相对于上面定义的最近的WORKDIR),注意细节copy一个文件,只需要src 和dest(不需要加引号),复制多个文件到同一目录需要使用[],src(需要加引号)写在前面,dest(需要加引号)卸载最后,中间用逗号隔开。如果src是目录,目录本身并不会被复制,复制的是该目录下的子目录和文件

  ADD src dest或ADD ["src", "src", ..., "dest"]:功能同COPY,但是ADD支持src为url的方式,并且如果本地的src为*.tar.gz,在镜像的dest中会被解压展开,当然如果src是url,即便下载的文件是*.tar.gz,也不会被展开

  WORKDIR path:定义工作目录,如果copy或者add中的路径为相对路径,那么它相对的就是它上面的离它最近的WORKDIR

  VOLUME amount:此种方式指定的挂在卷只能设置image内的挂载点,宿主机上的挂载点是docker daemon自动分配的

  EXPOSE port/protocol port/protocol:暴露外部访问容器的网络端口,docker run时,需要制定参数-P才能白暴露

  ENV key=value:设置环境变量,使用时${key}

  

  

  

猜你喜欢

转载自www.cnblogs.com/limaomao/p/11245870.html