Dockerfile指令说明(长期更新)

Dockerfile 常用指令说明。

FROM 指令

为当前要构建的镜像指定其基础镜像。

格式:

1
FROM 镜像名[:标签]

MAINTAINER 指令

用于指定当前镜像的维护者信息,该命令通常紧跟在 FROM 指令后面

格式:

1
MAINTAINER 名称

RUN 指令

RUN 指令用于指定在构建镜像时运行的命令。

格式一:

1
RUN ["命令", "参数1", ... "参数n"]

格式二:

1
CMD 命令 参数1...参数N

Docker 在运行命令是会在命令前加上 “bin/sh -c”

CMD 指令

CMD 指令用于指定容器启动时要运行的命令。

可以使用两种格式如下,

格式一:

1
CMD ["命令名", "参数1", "参数2", ... , "参数N"]

Docker 将按照命令原样来运行。

格式二:

1
CMD 命令 参数1...参数N

Docker 在运行命令是会在命令前加上 “bin/sh -c”

需要注意的是,1. CMD 中指定的命令会被 docker run 命令指定的命令覆盖。 2. Dockerfile中如果有多条CMD指令,只有最后一条生效。

ENTRYPOINT 指令

ENTRYPOINT 指令用于指定容器启动时要运行的命令。与 CMD 指令的不同之处在于 ENTRYPOINT 不会被 docker run 命令的参数覆盖,实际上,docker run 中指定的命令会被当作 ENTRYPOINT 命令执行时的参数。

格式:

1
ENTRYPOINT ["命令名", "参数1", "参数2", ... , "参数N"]

当同时使用 ENTRYPOINT, CMD 指令时,CMD 的内容被当作参数传递给 ENTRYPOINT 指定的命令

如果真的需要在 docker run 命令时覆盖 Dockerfile 中 ENTRYPOINT 指定的命令,可以在 docker run 中指定 –entrypoint 参数。

WORKDIR 指令

用来在容器构建是指定一个工作目录,ENTRYPOINT 和 CMD 命令将在其指定的目录运行。

格式:

1
WORKDIR 目录名

在 docker run 命令中,可用 -w 选项进行覆盖

ENV 指令

在镜像构建或容器运行时指定环境变量。

格式:

1
ENV 环境变量1=值1 [ ... 环境变量n=值n ]

USER 指令

指定容器运行时的用户和组。

格式:

1
USER 用户名[:组名]

也可以使用用户id和组id

在没有使用USER指令时,容器默认以root用户运行

VOLUME 指令

为容器创建添加文件卷,(概念上可以近似理解为在 window 系统中添加一个磁盘),该文件卷在容器中可以访问,但实际是映射到 Docker 运行的主机文件系统上的。因此可以脱离于容器的生命周期而存在,也可以在多个容器间共享。通常用来存储需要持久化的文件,数据或配置信息。

格式:

1
VOLUME ["目录1","目录2",..."目录n"]

可以在docker run 命令中指定参数 -v 进行覆盖

ADD 指令

用于将 Docker 运行的主机文件系统中的文件或目录复制到镜像中。

格式:

1
ADD 源地址 目的地址

源地址可以是URL的格式,也就说可以使用网络上的地址,比如某台HTTP服务器上的文件
如果源地址文件是一个zip文件,ADD命令会自动解压

COPY 指令

用于将 Docker 运行的主机文件系统中的文件或目录复制到镜像中。

格式:

1
COPY 源地址 目的地址

与ADD命令的不同在于:

  1. COPY 命令的源文件必须在当前构建环境目录中,与Dockerfile文件同级或是子目录

LABEL 指令

为镜像指定元数据。元数据以键值对的形式指定。

格式1】:

1
LABEL key1=value1 [key2=value2] ... [keyN=valueN]

本文标题:Dockerfile指令说明(长期更新)

文章作者:晨星

发布时间:2019年10月15日 - 23:10

最后更新:2020年05月28日 - 16:05

原始链接:https://www.mls-tech.info/docker/docker-dockerfile-cmd/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。