0
点赞
收藏
分享

微信扫一扫

docker(9)镜像制作(Dockerfile)

624c95384278 2022-01-27 阅读 53

概念

Dockerfile是一个文本文件

作用:

关键字

关键字作用说明
FROM指定父镜像指定dockerfile基于那些image构建
MAINTAINER作者信息表面这个dockefile是谁写的
LABEL标签用来标明dockerfile的标签可以使用Label代替Maintainer最终都是在docker image基本信息中可以查看
RUN执行命令执行一段命令默认是/bin/sh,格式:RUN command或者RUN[“command” , “param1”,“param2”]
CMD容器启动命令提供启动容器时候的默认命令和ENTRYPOINT配合使用,格式:CMD command param1 param2或者CMD [“command” ,“param1”,“param2”]
ENTYPOINT入口一般在制作—些执行就关闭的容器中会使用
COPY复制文件build的时候复制文件到image中,添加本地的,但是不会去解压缩
ADD添加文件build的时候添加文件到image中,添加并且会去解压,不仅仅局限于当前build上下文,可以来源于远程服务
ENV环境变量指定build时候的环境变量可以在启动的容器的时候通过-e覆盖,格式ENVname=value
ARG构建参数构建参数,只在构建的时候使用的参数。如果有ENV那么ENV的相同名字的值始终覆盖arg的参数
VOLUME定义外部可挂载的数据卷指定build的image那些目录可以启动的时候挂载到文件系统中,启动容器的时候使用-v绑定,格式VOLUME[“目录”]
EXPOSE暴露端口定义容器运行的时候监听的端口,启动容器的使用-p来绑定暴露端口。格式:EXPOSE 8080,或者EXPOSE 8080/udp
WORKDIR工作目录指定容器内部的工作目录,如果没有创建则自动创建;如果指定/,使用的是绝对地址;如果不是/开头,那么是在上—条workdir的路径的相对路径
USER指定执行用户指定build或者启动的时候,用户在RUN CMD ENTRYPONT执行的时候的用户
HEAKLTHCHECK接口检查指定监测当前容器的健康监测的命令,基本上没用,因为很多时候应用本身有健康监测机制
ONBUILD触发器当存在ONBUILD关键字的镜像作为基础镜像的时候,当执行FROM完成之后,会执行ONBUILD的命令,但是不影响当前镜像,用处也不怎么大
STOPSIGNAL发信号量到宿主机该STOPSIGNAL指令设置将发送到容器的系统调用信号以退出。
SHELL指定执行脚本的shell指定RUN CMD ENTRYPOINT 执行命令的时候,使用的shell

LABLE

LABEL 指令用来给镜像添加一些元数据(metadata),以键值对的形式,语法格式如下:

LABEL <key>=<value> <key>=<value> <key>=<value> ...

比如我们可以添加镜像的作者:

LABEL org.opencontainers.image.authors="runoob"

COPY

复制指令,从上下文目录中复制文件或者目录到容器里指定路径。

格式:

COPY [--chown=<user>:<group>] <源路径1>...  <目标路径>
COPY [--chown=<user>:<group>] ["<源路径1>",...  "<目标路径>"]
[--chown=<user>:<group>]:可选参数,用户改变复制到容器内文件的拥有者和属组。

<源路径>:源文件或者源目录,这里可以是通配符表达式,其通配符规则要满足 Go 的 filepath.Match 规则。例如:

COPY hom* /mydir/
COPY hom?.txt /mydir/

<目标路径>:容器内的指定路径,该路径不用事先建好,路径不存在的话,会自动创建。

ADD

ADD 指令和 COPY 的使用格类似(同样需求下,官方推荐使用 COPY)。功能也类似,不同之处如下:

  • ADD 的优点:在执行 <源文件> 为 tar 压缩文件的话,压缩格式为 gzip, bzip2 以及 xz 的情况下,会自动复制并解压到 <目标路径>。
  • ADD 的缺点:在不解压的前提下,无法复制 tar 压缩文件。会令镜像构建缓存失效,从而可能会令镜像构建变得比较缓慢。具体是否使用,可以根据是否需要自动解压来决定。
举报

相关推荐

0 条评论