Dockerfile
Dec 27, 2018 16:30 · 852 words · 2 minute read
Dockerfile
Dockerfile 是一个包含构建镜像所有命令的文本文件。
使用 docker build
命令,Docker 将读取并执行 Dockerfile 中的指令自动构建镜像。
格式
# Comment
INSTRUCTION args
Docker 顺序执行 Dockerfile 中的指令。Dockerfile 必须以 FROM
指令开始。
FROM
指令指定了构建镜像的基础源镜像。
注释以 #
符号开头。
Dockerfile 指令选项
- FROM
- RUN
- CMD
- EXPOSE
- ENV
- ADD
- COPY
- ENTRYPOINT
- VOLUME
- USER
- WORKDIR
- ONBUILD
FROM
FROM <image>
或
FROM <image>[:<tag>]
FROM
指令初始化新的构建,并设置基础源镜像。- 如果本地指定的镜像,会自动从 Docker 公共库拉取下来。
- 如果没有指定镜像标签,默认使用
latest
标签。
RUN
两种用法:
RUN <command>
(shell 形式)RUN ["executable", "param1", "param2"]
(exec 形式)
RUN
指令将在当前镜像之上执行指定命令,并提交为新的镜像。这个提交的镜像会在 Dockerfile 中的下一步被使用。
镜像是分层的,可以通过一个镜像的任何一个历史提交点来创建,类似源码的版本控制。
CMD
三种用法:
CMD ["executable","param1","param2"]
(exec 形式)CMD ["param1","param2"]
(设置为 ENTRYPOINT 的默认参数)CMD command param1 param2
(shell 形式)
Dockerfile 中只能有一个 CMD
指令,如果有多个只有最后一个会生效。
CMD
的主要目的是在启动容器时提供一个默认的命令执行选项。
EXPOSE
EXPOSE <port> [<port>/<protocol>...]
EXPOSE
指令告诉 Docker 容器运行时监听的端口。还可以指定监听 TCP 或 UDP,默认为 TCP。还需要在 docker run
时带上 -p
选项映射端口。
ENV
ENV <key> <value>
ENV <key>=<value> ...
ENV
指令设置环境变量。
ADD
两种用法:
ADD [--chown=<user>:<group>] <src>... <dest>
ADD [--chown=<user>:<group>] ["<src>",... "<dest>"]
(当路径包含空格时使用)
ADD
指令从 src
复制文件并添加到镜像的文件系统中。
必须是 Dockerfile 所在路径的相对路径 必须是绝对路径
COPY
两种用法:
COPY [--chown=<user>:<group>] <src>... <dest
COPY [--chown=<user>:<group>] ["<src>",... "<dest>"]
(当路径包含空格时使用)
COPY
指令从 src
复制文件并添加到镜像的文件系统中。
用法和 ADD
相同,唯一的不同是不能指定远程文件 URL。
ENTRYPOINT
两种用法:
ENTRYPOINT ["executable", "param1", "param2"]
()ENTRYPOINT command param1 param2
()
ENTRYPOINT