Dockerfile基础指令详解
  Q61SiiCoGao8 2023年11月02日 21 0


一、基础指令

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"]


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: Dockerfile简介 下一篇: Ubuntu安装MongoDB
  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
Q61SiiCoGao8