Dockerfile基础指令详解

一、基础指令

FROM

  • 格式:
FROM <image>
FROM <image>:<tag>
  • 解释:
    FROMDockerfile里的第一条而且只能是除了首行注释之外的第一条指令。

MAINTAINER

  • 格式:
MAINTAINER <name>
  • 解释:
    指定该Dockerfile文件的维护者信息。类似我们在docker commit时候使用-a参数指定的信息。

RUN

  • 格式:
RUN <command>  # shell模式
RUN["executable", "param1", "param2"]  # exec模式
  • 解释:
    表示当前镜像构建时候运行的命令
  • 注释:
    • shell模式:类似于 /bin/bash -c command
      举例:RUN echo hello
    • exec模式:类似于 RUN ["/bin/bash", "-c", "command"]
      举例:RUN ["echo", "hello"]

EXPOSE

  • 格式:
EXPOSE <port> [<port>...]
  • 解释:
    设置Docker容器对外暴露的端口号,Docker为了安全,不会自动对外打开端口,如果需要外部提供访问,还需要启动容器时增加-p或者-P参数对容器的端口进行分配。

ENTRYPOINT

  • 格式:
ENTRYPOINT ["executable", "param1","param2"]  # exec 模式
ENTRYPOINT command param1 param2  # shell模式
  • 解释:
    容器启动时执行的指令,每个Dockerfile中只能有一个ENTRYPOINT,当指定多个时,只有最后一个起效。

二、文件编辑指令

这一节,我们从指令详解、ADD实践、COPY实践、VOLUME实践这四个方面来学习。
注意:

  • ADDCOPY相当于数据卷操作;
  • VOLUME相当于数据卷容器操作。

ADD

  • 格式:
ADD <src>... <dest>
ADD ["<src>",... "<dest>"]
  • 解释:
    将指定的 <src>文件复制到容器文件系统中的 <dest>
    src指的是宿主机,dest指的是容器
    如果源文件是个压缩文件,则docker会自动帮解压到指定的容器中(无论目标是文件还是目录,都会当成目录处理)。

COPY

  • 格式:
COPY <src>... <dest>
COPY ["<src>",... "<dest>"]
  • 解释:
    单纯复制文件场景,Docker推荐使用COPY

VOLUME

  • 格式:
VOLUME ["/data"]
  • 解释:
    VOLUME指令可以在镜像中创建挂载点,这样只要通过该镜像创建的容器都有了挂载点,通过VOLUME指令创建的挂载点,无法指定主机上对应的目录,是自动生成的。
    举例:
    VOLUME ["/var/lib/tomcat7/webapps/"]
ADD实践
  • 拷贝普通文件,Dockerfile文件内容:
......
# 执行命令
......
# 增加文件
ADD ["sources.list","/etc/apt/sources.list"]
......
  • 拷贝压缩文件,Dockerfile文件内容:
......
# 执行命令
......
# 增加文件
ADD ["linshi.tar.gz","/nihao/"]
......
COPY实践
  • 修改Dockerfile文件内容:
......
# 执行命令
......
# 增加文件
COPY index.html /var/www/html/
......
ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]
VOLUME实践

修改Dockerfile文件内容:

# 在上一个Dockerfile文件内容基础上,在COPY下面增加一个VOLUME
VOLUME ["/data/"]
......

三、环境指令详解

这一节,我们从指令详解、ENV实践、WORKDIR实践这三个方面来学习。

ENV

  • 格式:
ENV <key> <value>
ENV <key>=<value>
  • 解释:
    设置环境变量,可以在RUN之前使用,然后RUN命令时调用,容器启动时这些环境变量都会被指定.

WORKDIR

  • 格式:
WORKDIR /path/to/workdir  # shell模式
  • 解释:
    切换目录,为后续的RUNCMDENTRYPOINT指令配置工作目录。 相当于cd
    可以多次切换(相当于cd命令),
    也可以使用多个WORKDIR指令,后续命令如果参数是相对路径,则会基于之前命令指定的路径。例如
    举例:
WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd
# 则最终路径为 /a/b/c。
ENV实践
  • 修改Dockerfile文件内容:
# 在上一个Dockerfile文件内容基础上,在RUN下面增加一个ENV
ENV NIHAO=helloworld
WORKDIR实践
  • 修改Dockerfile文件内容:
# 在上一个Dockerfile文件内容基础上,在RUN下面增加一个WORKDIR
WORKDIR /nihao/GuiYiHuShen/
RUN ["touch","GuiYiHuShen.txt"]
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鬼义II虎神

打赏5C币,作者可获得4C币

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值