Docker 使用 Dockerfile 文件来编译自己的镜像,Dockerfile 主要有如下的命令。

FROM 指令

FROM 指令指明了当前镜像继承的基镜像。编译当前镜像时会自动下载基镜像。

  1. FROM ubuntu

MAINTAINER 指令

MAINTAINER 指令指明了当前镜像的作者。

  1. MAINTAINER yjw

RUN 指令

RUN 指令可以在当前镜像上执行 Linux 命令并形成一个新的层。RUN 是编译时(build)的动作。示例可有如下两种格式,CMD 和 ENTRYPOINT 也是如此:

  1. RUN /bin/bash -c "echo helloworld"
  2. RUN {"/bin/bash", "-c", "echo helloworld"}

CMD 指令

CMD 指令指明了启动镜像容器时的默认行为。一个 Dockerfile 里只能有一个 CMD命令。CMD 指令里设定的命令可以在运行镜像时使用参数覆盖。CMD 是运行时(run)的动作。

  1. CMD echo "this is a test"

可被 docker run -d image_name echo “this is not a test” 覆盖。

EXPOSE 指令

EXPOSE 指明了镜像运行时的容器必须监听指定改的端口。

  1. EXPOSE 8080

ENV 指令

ENV 指令可用来设置环境变量。

  1. ENV myName=yjw
  2. ENV myName yjw

ADD 指令

ADD 指令是从当前工作目录复制文件到镜像目录中去。

  1. ADD test.txt /mydir/

ENTRYPOINT 指令

ENTRYPOINT 指令可让容器像一个可执行程序一样运行,这样镜像运行时可以像软件一样接受参数执行。ENTRYPOINT 是运行时(run)的动作。

  1. ENTRYPOINT ["/bin/echo"]

我们可以向镜像传递参数运行:

  1. docker run -d image_name "this is not a test"