12 - Dockerfile指令集(Docker系列)

本文章来自【知识林】

在使用Dockerfile一构建Docker镜像之前需要先搞清楚Dockerfile中都有哪些常用的指令,这样在使用起来才能得心应手。

这篇文章主要列举出Dockerfile中比较常用的指令及其用法和说明,需要注意的是这些指令都是全部大写。

FROM

  • 说明:指定该镜像的基础镜像
  • 格式如:FROM <image>FROM <image>:<tag>
  • 示例:FROM centos:7
  • 注意:FROM一般出现在文件头,且每个镜像都需要有一个FROM来指定基础镜像。

MAINTAINER

  • 说明:指定作者信息
  • 格式如:MAINTAINER <name>
  • 示例:MAINTAINER 知识林 "393156105@qq.com"

RUN

  • 说明:在构建镜像时执行脚本
  • 格式如:RUN <command>RUN ["exec", "par1", "par2"]
  • 示例:RUN ls -l(以详细信息方式列表当前目录下的文件,跟在shell终端运行一样)

CMD

  • 说明:在运行容器时执行脚本
  • 格式如:CMD <command> <par1> <par2> ...CMD ["exec", "par1", "par2"]
  • 示例:CMD ["ls", "-l"]
  • 注意:一个Dockerfile中只有一条CMD,如果有多条只执行最后一条;在运行容器时如果用户指定了运行命令则Dockerfile中的CMD将被覆盖。

ENTRYPOINT

  • 说明:在运行容器时执行脚本
  • 格式如:ENTRYPOINT ["exec", "par1", "par2"]ENTRYPOINT command par1 par2
  • 示例:ENTRYPOINT ["catalina.sh", "run"]
  • 注意:一个Dockerfile中只有一条ENTRYPOINT,如果有多条只执行最后一条;不可以被容器运行时的命令所覆盖。

EXPOSE

  • 说明:让Docker暴露容器的端口号,供容器外部使用
  • 格式如:EXPOSE <port> ...
  • 示例:EXPOSE 8080

ENV

  • 说明:指定环境变量,在Dockerfile文件中的后续代码中使用,在容器运行时也可以使用
  • 格式如:ENV <key> <value>
  • 示例:ENV tomcat_home /web/tomcat/

ADD

  • 说明:添加文件(夹)到容器
  • 格式如:ADD <src> <dest>
  • 示例:ADD web.jar /web.jar
  • 注意:复制指定的<src>到容器中的<dest><src>可以是Dockerfile所在目录的一个相对路径,也可以是一个URL,也可以是一个tar文件(tar文件将自动解压成文件目录)

COPY

  • 说明:添加文件(夹)到容器
  • 格式如:COPY <src> <dest>
  • 示例:COPY web.jar /web.jar
  • 注意:与ADD功能相似,只是不能指定URL,使用本地文件(夹)为源文件时,推荐使用COPY

VOLUME

  • 说明:创建一个挂载点
  • 格式如:VOLUME [path]
  • 示例:VOLUME ["/datas"]
  • 注意:可以用作容器内部与宿主机的数据交互,一般用于数据库或文件数据的持久存储

WORKDIR

  • 说明:设置工作目录
  • 格式如:WORKDIR /path
  • 示例:WORKDIR /web
  • 注意:可以使用绝对路径,也可以使用相对路径,设置之后的所有操作都将在这个目录下完成

特别注意

在上面的描述中可以看到有两组指令在功能上都差不多,但也是有区别的:

  • RUNCMDENTRYPOINT执行脚本的指令

    • 三个指令都是执行脚本
    • RUN是在创建镜像是执行,即使用docker build命令时执行,在一个Dockerfile里面可以有多个RUN
    • CMDENTRYPOINT是在运行容器时执行,即使用docker run命令时执行,这两个指令在Dockerfile中都只有最行一条被执行
    • CMD在使用docker run时可以加参数将Dockerfile中的CMD覆盖
    • ENTRYPOINT在Dockerfile中出现后就一定会在docker run时被执行,不必担心会被其他参数所覆盖。
  • ADDCOPY拷贝文件(夹)到容器

    • ADD拷贝文件(夹)时可以指定本地文件、远程URL地址,如果拷贝的是tar文件时将会被自动解压成文件夹
    • COPY拷贝文件(夹)时不可以指定远程URL地址,拷贝tar文件也不会被自动解压成文件夹,在拷贝本地文件时建议使用COPY

本文章来自【知识林】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值