美文网首页
Dockerfile 指令

Dockerfile 指令

作者: 何家小富富 | 来源:发表于2021-02-20 08:46 被阅读0次
FROM                # 基础镜像,一切从这里开始构建
MAINTAINER          # 镜像是谁写的, 姓名+邮箱
RUN                 # 镜像构建的时候需要运行的命令
ADD                 # 步骤,tomcat镜像,这个tomcat压缩包!添加内容 添加同目录
WORKDIR             # 镜像的工作目录
VOLUME              # 挂载的目录
EXPOSE              # 保留端口配置
CMD                 # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代。
ENTRYPOINT          # 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD             # 当构建一个被继承 DockerFile 这个时候就会运行ONBUILD的指令,触发指令。
COPY                # 类似ADD,将我们文件拷贝到镜像中
ENV                 # 构建的时候设置环境变量!


指令格式

  1. 注释:
#开头 为注释
  1. 指令
大写的指令名  后面紧接着参数

指令详解

FROM 指令

FROM 指令的参数有两种格式
FROM <image>
FROM <image>:<TAG>

注意:

  • 镜像必须是已存在的镜像
  • 后续指令基于这个基础镜像进行执行
  • 必须是在Dockerfile中第一条非注释的指令

MAINTAINER 指令

指定镜像的作者信息,包含镜像的所有者和联系信息


RUN 指令

RUN 指令 指定当前镜像中运行的命令

命令包括两种参数模式:

  • shell 模式
# 以/bin/sh -c 的模式来执行指令
RUN <command>
  • exec 模式
# 可以指定其它形式的shell来运行指令
RUN ["executable","param1","param2"]
eg: RUN ["/bin/bash","-c","echo Hello World"]

镜像分层概念

每一个RUN指令都会在指令的上层创建一个新的镜像(中间层镜像)来运行执行的命令


EXPOSE 指令

EXPOSE 指令用于指定运行该镜像的容器使用的端口。可以指定一个或多个端口,也可以在一个Dockerfile中使用多个Expose指令。

虽然在镜像构建中指定了暴露的端口号,但是在容器运行的时候还是要手动指定端口映射。

在Dockerfile中使用 Expose指令,只是告诉 Docker改容器内的程序会使用特定的端口,但是出于安全的考虑,Docker并不会自动的打开端口,还是需要在使用时手动添加端口映射。


CMD 指令

CMD 指令 用来提供容器运行的默认命令,只有最后一个会生效,可覆盖。
RUN 指令:镜像构建过程中运行的命令,可以追加。
CMD 指令: 容器运行时运行的命令。docker run 命令指定了容器运行的命令,那么CMD命令就会被覆盖,不会再执行。

  • shell模式
   CMD command param1 param2...
  • exec模式
  CMD ["command","parma1","param2"...]
  • 与 ENTRYPOINT 指令使用 提供 ENTRYPOINT 指令默认参数
CMD ["PARAM1","PARAM2"..]

ENTRYPOINT 指令

ENTRYPOINT 指令 与 CMD 指令相似,但是ENTRYPOINT 指令 不会被 docker run 命令覆盖。如果要覆盖 ENTRYPOINT 指令 ,则要在 docker run 命令中指定 ENTRYPOINT 选项。

ENTRYPOINT 和 CMD 指令的配合使用

  • ENTRYPOINT 指令指定容器启动时的命令
  • CMD 指令指定容器启动时命令的参数
ENTRYPOINT ["/usr/sbin/nginx"]
CMD ["-h"]

ADD 指令 和 COPY 指令

这两个指令都是将文件或目录 复制到 使用 Dockerfile 构建的镜像中,他们都支持两种参数,来源地址和目标地址。
ADD和COPY的资源是构建目录中的相对的路径,不建议用远程路径

远程URL路径: Docker 建议使用 wget 或者 curl 指令

ADD <src> <dest>
ADD ["<src>","<dest>"] (适用于文件路径中有空格的情况)

COPY <src> <dest>
COPY ["<src>","<dest>"] (适用于文件路径中有空格的情况)

src: 源文件或者源目录的相对路径
dest: 指定镜像中的绝对路径
  • add 指令 包含类似 tar 提供的解压缩功能,
  • 如果是单纯复制文件,建议使用 COPY 指令

VOLUME 指令

VOLUME 指令 可以为基于镜像创建的容器添加 ,一个卷是可以存在一个或多个容器的特定目录,这个目录可以绕过联合文件系统,并提供共享数据,对数据持久化的功能。

VOLUME ["volume01","volume02"]
    匿名挂载 相当于 
        -v /volume01 /volume02

当 docker run --volumes-from

docker run -it hcf_centos --name 'hcf_centos02' --volumes-from hcf_centos01 /bin/bash

    新建的 hcf_centos02 容器的 volume 与 hcf_centos01 挂载在一起,实现数据共享

WORKDIR 指令

WORKDIR 指令 用来在从镜像创建新容器时,在容器内部设置工作目录, ENTRYPOINT 和 CMD 指定的命令会在这个目录下执行。可以使用 WORKDIR指令 在构建中为后续的指令指定工作目录
注意:WORKDIR通常使用的是绝对路径,如果是相对路径,工作路径会一级级传递下去。


ENV 指令

ENV 指令 用来设置环境变量,与WORKDIR指令 类似,ENV指令 可以作用于 构建过程 以及 运行过程中。


USER 指令

USER 指令 指定镜像以 指定的用户运行。默认使用root用户


ONBUILD 指令

ONBUILD 指令 镜像触发器,为镜像添加触发器,当这个镜像作为其它镜像的基础镜像时,会执行 触发器,当子镜像在构建时,会插入触发器的指令

相关文章

  • 使用dockerfile构建自己的镜像

    一、什么是dockerfile 二、Dockerfile基础指令 二、Dockerfile运行指令

  • Dockerfile使用

    Dockerfile 使用 Dockerfile 定义镜像,将指令进行保存,每条指令代表着一层构建操作,依赖指令创...

  • Dockerfile最佳实践

    Dockerfile 简介 Docker通过读取Dockerfile文件中的指令自动构建镜像。Dockerfile...

  • dockerfile

    在dockerfile dockerfile常用指令 FROM 指定base镜像MA...

  • docker-基础命令和使用案例

    Docker基础命令 Dockerfile指令 编写Dockerfile原则 1.减少镜像层:一次RUN指令形成新...

  • Dockerfile 参考手册(三):指令介绍

    博客原文 接着上一篇《Dockerfile 参考手册(二):指令介绍》继续介绍Dockerfile相关指令。文档是...

  • Dockerfile指令

    1、FROM第一条指令必须为FROM指令,并且,如果在同一个Dockerfile中创建多个镜像时,可以使用多个FR...

  • Dockerfile指令

    Dockerfile文件中,除了有FROM指令和RUN指令外,还有几个比较常用的指令 1、 COTY 复制文件 格...

  • Dockerfile指令

    CMD:用于指定一个容器启动时要运行的命令 注意:a.docker run命令可以覆盖CMD命令;b.在docke...

  • Dockerfile 指令

    学习完整课程请移步 互联网 Java 全栈工程师 我们已经介绍了 FROM,RUN,还提及了 COPY, ADD,...

网友评论

      本文标题:Dockerfile 指令

      本文链接:https://www.haomeiwen.com/subject/nucaxltx.html