第 9 章 构建容器镜像


构建容器镜像涉及为容器化应用程序创建蓝图。蓝图依赖于其他公共存储库中的基础镜像,它们定义如何安装和配置应用程序。

注意

因为蓝图依赖于其他公共软件仓库中的镜像,所以它们可能会受到速率限制。因此,您的构建 可能会失败

Quay.io 支持构建 Docker 和 Podman 容器镜像。此功能对于依赖容器和容器编排的开发人员和组织而言非常宝贵。

在 Quay.io 上,此功能在免费和支付的层计划中的工作方式相同。

注意

Quay.io 限制单个用户一次可以提交的同时构建数量。

9.1. 构建上下文

使用 Docker 或 Podman 构建镜像时,将指定目录成为 构建上下文。对于手动构建和构建触发器,这是正确的,因为 Quay.io 创建的 Build 与在本地计算机上运行 docker buildpodman build 不同。

如果未指定目录,Quay.io 构建上下文始终在 子目录中 指定,并在未指定目录时回退到 Build 源的根目录。

触发构建时,Quay.io 构建程序将 Git 存储库克隆到 worker 机器,然后在执行构建前输入构建上下文。

对于基于 .tar 归档的构建,构建工作程序提取存档并输入构建上下文。例如:

提取的构建存档

example
├── .git
├── Dockerfile
├── file
└── subdir
    └── Dockerfile

假设 Extracted Build 归档 是目录结构,它有一个 Github 存储库,名为 example。如果在 Build 触发器设置中没有指定子目录,或者在手动启动构建时指定,则构建在示例目录中运行。

如果在 Build 触发器设置中指定子目录,如 subdir,则构建中只有其中的 Dockerfile 才可以看到。这意味着您不能使用 Dockerfile 中的 ADD 命令来添加文件,因为它不在构建上下文之外。

与 Docker Hub 不同,Dockerfile 是 Quay.io 上的构建上下文的一部分。因此,它不能出现在 .dockerignore 文件中。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.