zoukankan      html  css  js  c++  java
  • Dockerfile 常用指令

    是时候系统学习 Dockerfile 了。

    下面列出了 Dockerfile 中最常用的指令,完整列表和说明可参看官方文档。

    FROM
    指定 base 镜像。

    MAINTAINER
    设置镜像的作者,可以是任意字符串。

    COPY
    将文件从 build context 复制到镜像。
    COPY 支持两种形式:

    1. COPY src dest

    2. COPY ["src", "dest"]

    注意:src 只能指定 build context 中的文件或目录。

    ADD
    与 COPY 类似,从 build context 复制文件到镜像。不同的是,如果 src 是归档文件(tar, zip, tgz, xz 等),文件会被自动解压到 dest。

    ENV
    设置环境变量,环境变量可被后面的指令使用。例如:

    ...

    ENV MY_VERSION 1.3

    RUN apt-get install -y mypackage=$MY_VERSION

    ...

    EXPOSE
    指定容器中的进程会监听某个端口,Docker 可以将该端口暴露出来。我们会在容器网络部分详细讨论。

    VOLUME
    将文件或目录声明为 volume。我们会在容器存储部分详细讨论。

    WORKDIR
    为后面的 RUN, CMD, ENTRYPOINT, ADD 或 COPY 指令设置镜像中的当前工作目录。

    RUN
    在容器中运行指定的命令。

    CMD
    容器启动时运行指定的命令。
    Dockerfile 中可以有多个 CMD 指令,但只有最后一个生效。CMD 可以被 docker run 之后的参数替换。

    ENTRYPOINT
    设置容器启动时运行的命令。
    Dockerfile 中可以有多个 ENTRYPOINT 指令,但只有最后一个生效。CMD 或 docker run 之后的参数会被当做参数传递给 ENTRYPOINT。

    下面我们来看一个较为全面的 Dockerfile:

    81.png

    注:Dockerfile 支持以“#”开头的注释。

    构建镜像:

    ① 构建前确保 build context 中存在需要的文件。

    ② 依次执行 Dockerfile 指令,完成构建。

    运行容器,验证镜像内容:

    ① 进入容器,当前目录即为 WORKDIR。
    如果 WORKDIR 不存在,Docker 会自动为我们创建。

    ② WORKDIR 中保存了我们希望的文件和目录:
    目录 bunch:由 ADD 指令从 build context 复制的归档文件 bunch.tar.gz,已经自动解压。
    文件 tmpfile1:由 RUN 指令创建。
    文件 tmpfile2:由 COPY 指令从 build context 复制。

    ③ ENV 指令定义的环境变量已经生效。

    在上面这些指令中,RUN、CMD、ENTRYPOINT 很重要且容易混淆,下节专门讨论。

    二维码+指纹.png

  • 相关阅读:
    CodeForces 347B Fixed Points (水题)
    CodeForces 347A Difference Row (水题)
    CodeForces 346A Alice and Bob (数学最大公约数)
    CodeForces 474C Captain Marmot (数学,旋转,暴力)
    CodeForces 474B Worms (水题,二分)
    CodeForces 474A Keyboard (水题)
    压力测试学习(一)
    算法学习(一)五个常用算法概念了解
    C#语言规范
    异常System.Threading.Thread.AbortInternal
  • 原文地址:https://www.cnblogs.com/CloudMan6/p/6864000.html
Copyright © 2011-2022 走看看