第 12 章 构建容器镜像
构建容器镜像涉及为容器化应用程序创建蓝图。蓝图依赖于其他公共存储库中的基础镜像,以定义如何安装和配置应用程序。
因为蓝图依赖于其他公共存储库中的镜像,所以它们可能会受速率限制。因此,您的构建 可能会失败。
Quay.io 支持构建 Docker 和 Podman 容器镜像的功能。此功能对于依赖容器和容器编配的开发人员和组织而言非常宝贵。
在 Quay.io 上,此功能可在免费和付费的层计划中正常工作。
Quay.io 限制一个用户可以一次提交的同步构建数量。
12.1. 构建上下文
使用 Docker 或 Podman 构建镜像时,将指定一个目录成为 构建上下文。对于手动构建和构建触发器,这也是如此,因为 Quay.io 创建的 Build 与在本地机器上运行 docker build
或 podman build
不同。
Quay.io 构建上下文始终在构建设置 的子目录 中指定,如果未指定目录,则回退到 Build 源的根目录。
触发构建时,Quay.io 构建 worker 将 Git 存储库克隆到 worker 机器,然后在执行构建前输入 Build 上下文。
对于基于 .tar
归档的构建,构建 worker 会提取存档并输入构建上下文。例如:
提取的构建存档
example ├── .git ├── Dockerfile ├── file └── subdir └── Dockerfile
假设您 Extracted Build 存档 是目录结构获取名为 example 的 Github 存储库。如果在 Build 触发器设置中没有指定子目录,或者在手动启动构建时,构建将在示例目录中运行。
如果在 Build 触发器设置中指定子目录,如 subdir
,则只有其中的 Dockerfile 可用于构建。这意味着您无法使用 Dockerfile 中的 ADD
命令来添加文件,因为它位于构建上下文之外。
与 Docker Hub 不同,Dockerfile 是 Quay.io 上构建上下文的一部分。因此,它不能出现在 .dockerignore
文件中。