什么是 Dockerfile 语法?
Dockerfile 是一个使用 Docker 平台自动生成容器的脚本。它本质上是一个文本文档,其中包含用户可以用来从命令行创建图像的所有指令。 Docker 平台是一个基于 Linux 的平台,允许开发人员创建和执行独立于底层基础设施的容器、自包含程序和系统。 Docker 基于 Linux 内核的资源隔离能力,允许开发人员和系统管理员通过在容器中执行程序来跨多个系统和机器传输程序。
借助 Dockerfiles,Docker 容器可以在任何 Linux 主机上运行。 Docker 镜像用于构建应用程序的容器环境,可以手动生成,也可以使用 Dockerfile 自动生成。 Docker 容器可以执行 Linux 和 Windows 应用程序。开发人员可以使用 Dockerfiles 构建一个自动容器构建,该构建逐步执行一系列命令行指令。 Docker 容器化本质上是操作系统级别的虚拟化。没有虚拟机的启动开销,多个独立的容器可以在单个 Linux 实例中运行。
Dockerfile 为业务应用程序提供了更大的灵活性和移动性。 IT 公司使用 Dockerfile 将程序及其依赖项捆绑在一个虚拟容器中,该容器可以在裸机、公共或私有云或本地运行。许多应用程序、工作任务和其他活动可以在单个物理计算机上独立运行,也可以使用容器跨多个虚拟机运行。 Kubernetes 是一种开源解决方案,用于自动管理和编排基于 Dockerfile 的容器化应用程序。
在本文中,我们将逐步讨论编写 Dockerfile 的语法。
1.来自:
FROM 语句定义要下载和从哪个图像开始。它必须是 Dockerfile 中的第一个命令。一个 Dockerfile 可以有多个 FROM 语句,这意味着 Dockerfile 生成多个图像。
例子:
FROM java: 8
2. 维护者:
这个声明是一种文档,它定义了创建这个 Dockerfile 的作者或者如果它有 bug 应该联系谁。
例子:
MAINTAINER Firstname Lastname
3. 运行:
RUN 语句定义通过 shell 运行命令,等待它完成并保存结果。它告诉运行时容器内将运行什么进程。
例子:
- 运行解压缩 install.zip /opt/install
- 运行回声你好
4.添加:
如果我们定义添加一些文件,则使用 ADD 语句。它基本上给出了复制新文件、目录或远程文件 URL 的指令,然后将它们添加到图像的文件系统中。
总而言之,它可以添加本地文件、tar 档案的内容以及 URL。
例子:
1. Local Files: ADD run.sh /run.sh
2. Tar Archives: ADD project.tar.gz /install/
3. URLs: ADD https://project.example-gfg.com/downloads/1.0/testingproject.rpm/test
5.环境:
ENV 语句在构建期间和运行结果时设置环境变量。它可以在 Dockerfile 和它调用的任何脚本中使用。它可以在 Dockerfile 以及 Dockerfile 调用的任何脚本中使用。这些也是容器持久的,可以随时引用。
例子:
ENV URL_POST=production.example-gfg.com
6. 入口点:
它指定启动容器时要使用的表达式的开头。只需 ENTRYPOINT 指定要运行的命令的开始。如果您的容器充当命令行程序,则可以使用 ENTRYPOINT。
例子:
ENTRYPOINT ["/start.sh"]
7. 命令:
CMD 指定要运行的整个命令。我们可以说 CMD 是传递给 ENTRYPOINT 的默认参数。 CMD 命令的主要目的是启动容器中所需的软件。
例子:
- CMD [“program-foreground”]
- CMD [“executable”, “program1”, “program2”]
注意:如果您同时拥有 ENVIRONMENT 和 CMD,它们将组合在一起。
8. 暴露:
EXPOSE 语句将端口映射到容器中。端口可以是 TCP 或 UDP,但默认情况下是 TCP。
例子:
EXPOSE 3030
9. 音量:
VOLUME 语句根据您是否有一个或两个参数来定义共享卷或临时卷。
例子:
1. If you have two arguments, it maps a host path into acontainer path.
VOLUME [“/host/path” “/container/path/”]
2. If you have one arguments, it creates a volume that can be inherited by the later containers.
VOLUME [“/shared-data”]
10. 工作目录:
顾名思义,WORKDIR 设置容器启动的目录。它的主要目的是为所有未来的 Dockerfile 命令设置工作目录。
例子:
WORKDIR /directory-name
11. 用户:
它设置用户的容器将作为哪个用户运行。如果您涉及假定固定用户名或固定用户编号的共享网络目录,这将很有用。
例子:
USER geeksforgeeks
USER 4000