Dockerfile 是用于自动化构建 Docker 镜像的脚本文件,包含一系列指令和参数,用于描述镜像的构建与配置过程。
以下是常用的 Dockerfile 关键字及其详细教程:
FROM
FROM:指定基础镜像
语法:FROM <image>[:<tag>] [AS <name>]
示例:FROM ubuntu:20.04
说明:image 表示基础镜像名称,tag 表示标签,默认为 latest,AS 用于定义别名 name,可以在后续指令中使用。
MAINTAINER
注意:从 Docker 1.13 开始,推荐使用 LABEL 指令代替 MAINTAINER。
语法:MAINTAINER <author name>
示例:MAINTAINER John Doe
说明:指定作者信息。
RUN
RUN:在镜像中执行命令
语法:RUN <command>
示例:RUN apt-get update && apt-get install -y curl
说明:在镜像中执行指定命令,如安装软件等。
CMD
CMD:指定容器启动时要运行的命令
语法:CMD <command> [arg1] [arg2] ...
示例:CMD ["nginx", "-g", "daemon off;"]
说明:定义容器启动后要执行的命令。如果 Dockerfile 中有多个 CMD 指令,只有最后一个会生效。
EXPOSE
EXPOSE:声明镜像需要监听的端口
语法:EXPOSE <port> [<port>/<protocol>] ...
示例:EXPOSE 80
说明:声明容器在运行时需要监听的端口。
ENV
ENV:设置环境变量
语法:ENV <key> <value>
示例:ENV NGINX_VERSION 1.21.0
说明:设置环境变量,可以在后续指令和命令中使用。
ADD
ADD:将本地文件或目录复制到镜像中
语法:ADD <src> <dest>
示例:ADD nginx.conf /etc/nginx/
说明:将指定的本地文件或目录复制到镜像中。如果 <src> 是一个 URL,Docker 会尝试下载该 URL。
COPY
COPY:将本地文件或目录复制到镜像中
语法:COPY <src> <dest>
示例:COPY nginx.conf /etc/nginx/
说明:将指定的本地文件或目录复制到镜像中。
ENTRYPOINT
ENTRYPOINT:配置容器启动命令
语法:ENTRYPOINT []
示例:ENTRYPOINT ["echo", "Hello world!"]
说明:设定容器的默认启动命令,也可以搭配 CMD 指定容器启动的默认参数。
WORKDIR
WORKDIR:设置工作目录
语法:WORKDIR /path/to/workdir
示例:WORKDIR /root
说明:设置一个工作目录,下面的 CMD、RUN、ENTRYPOINT 等指令的执行路径都会在该目录下进行。
VOLUME
VOLUME:声明持久化目录
语法:VOLUME /path/to/volume
示例:VOLUME /data
说明:声明挂载到容器中的目录,可以用来存储数据等。
USER
USER:指定运行容器时的用户名或 UID
语法:USER <user>[:<group>]
示例:USER nginx
说明:指定运行容器时的用户名或 UID,也可以指定组名。如果只指定用户,Docker 会自动为该用户创建一个与用户名相同的主组。
LABEL
LABEL:设置元数据
语法:LABEL <key>=<value>
示例:LABEL version="1.0"
说明:设置 Docker 镜像的元数据,如版本、描述、维护者等信息。
以上是 Dockerfile 常用的关键字及其详细教程,希望对您有所帮助。