问答题876/1053DockerFile中最常见的指定是什么?

难度:
2021-11-02 创建

参考答案:

Dockerfile 中,常见的指令(命令)有很多,每个指令都有特定的作用,帮助我们定义 Docker 镜像的构建过程。以下是一些最常见和最重要的 Dockerfile 指令:

1. FROM

FROM 指令指定基础镜像,它是 Dockerfile 中必须的第一行。每个 Dockerfile 都必须以 FROM 开头,指定镜像的基础。

1FROM <image_name>:<tag>
  • <image_name>:指定基础镜像的名称。
  • <tag>:指定镜像的标签(默认是 latest)。

示例:

1FROM ubuntu:20.04

2. LABEL

LABEL 用于为镜像添加元数据(例如镜像的作者、版本等)。这种信息通常用于镜像的标识和管理。

1LABEL key="value"

示例:

1LABEL maintainer="example@example.com" 2LABEL version="1.0"

3. RUN

RUN 指令在构建镜像过程中执行命令。它用于安装软件包、执行 shell 脚本或进行其他设置,命令执行完成后会将结果保存到镜像中。

1RUN <command>

示例:

1RUN apt-get update && apt-get install -y python3

4. COPY

COPY 将文件或目录从构建上下文复制到镜像中的指定路径。

1COPY <src> <dest>
  • <src>:要复制的文件或目录路径(相对于 Dockerfile 的上下文路径)。
  • <dest>:复制到镜像中的路径。

示例:

1COPY ./app /usr/src/app

5. ADD

ADD 类似于 COPY,但是 ADD 更强大,它支持自动解压 .tar 文件和从 URL 下载文件。

1ADD <src> <dest>

示例:

1ADD ./app.tar.gz /usr/src/app

6. CMD

CMD 指定一个默认的命令或参数,该命令会在容器启动时运行。如果容器启动时未指定其他命令,CMD 定义的命令将被执行。

1CMD ["executable", "param1", "param2"]
  • 如果使用 shell 形式:CMD echo "Hello, World!"
  • 如果使用 JSON 数组形式:CMD ["echo", "Hello, World!"]

示例:

1CMD ["python3", "app.py"]

7. ENTRYPOINT

ENTRYPOINT 用于设置容器的启动命令。与 CMD 不同,ENTRYPOINT 不能被 docker run 命令替代。如果 ENTRYPOINTCMD 都指定了,则 CMD 提供默认参数给 ENTRYPOINT

1ENTRYPOINT ["executable", "param1", "param2"]

示例:

1ENTRYPOINT ["python3", "app.py"]

8. EXPOSE

EXPOSE 指定容器应暴露的端口。它仅仅是一个说明,Docker 不会自动将端口映射到主机上。实际的端口映射需要使用 docker rundocker-compose 配置。

1EXPOSE <port>

示例:

1EXPOSE 8080

9. ENV

ENV 设置环境变量,可以在容器运行时使用。

1ENV <key>=<value>

示例:

1ENV APP_HOME=/usr/src/app

10. VOLUME

VOLUME 指定一个或多个匿名卷,这些卷会在容器启动时创建。卷可以用于持久化存储数据。

1VOLUME ["/data"]

示例:

1VOLUME ["/data", "/config"]

11. WORKDIR

WORKDIR 设置工作目录。如果指定的目录不存在,WORKDIR 会自动创建。

1WORKDIR <path>

示例:

1WORKDIR /usr/src/app

12. USER

USER 指定在容器中运行命令时的用户。它是一个非常重要的安全措施,防止容器以 root 用户身份运行应用程序。

1USER <username>

示例:

1USER nobody

13. ARG

ARG 定义了在构建时可用的构建参数。与环境变量不同,ARG 只在构建阶段有效,构建完成后不可用。

1ARG <name>[=<default_value>]

示例:

1ARG VERSION=1.0

14. SHELL

SHELL 指定在 RUN 指令中使用的 shell 类型和参数。

1SHELL ["executable", "parameters"]

示例:

1SHELL ["powershell", "-Command"]

最近更新时间:2024-12-09