Docker 注册表连接
Docker 注册表连接 构建功能允许 TeamCity 在构建开始前自动登录到 DockerHub 或其他容器注册表。
将此功能添加至:
允许 TeamCity 监控并检测 Docker / Podman 操作(例如,
docker pull
和podman run
);在构建前自动登录已认证的注册表,构建后退出登录。
清理本地(适用于 Docker 和 Podman)和推送到注册表的镜像(仅适用于 Docker);
将 容器信息 选项卡添加到 构建结果 页面。 该标签页提供了与使用的容器管理器相关的操作信息。
登录和退出存储库以及清理镜像需要配置好的 Docker 注册表 连接:

note
Docker 注册表连接是 TeamCity-Docker/Podman 集成工具集的一部分。 请参考本文档文章,了解有关软件需求、支持的环境以及此集成的其他常见方面的信息: 将 TeamCity 与容器管理器集成。
如果您有一个用于发布镜像的构建配置,那么您需要在某个时间点删除它们。 您可以选择相应的选项,并指示 TeamCity 在构建自身被 清理 时,移除由某个特定构建发布的镜像。
它的工作原理如下:当发布一个镜像时,TeamCity会存储构建发布的镜像的注册表信息。 当运行 服务器清理 并删除构建时,系统将搜索所有配置的连接以找到此注册表的地址,并使用找到的连接中指定的凭据清理构建发布的镜像。
如果镜像是从 Linux 代理推送的,且设置了 --digestfile=<文件名>
选项,目前只有在这种情况下,才能清理通过 Podman 推送的镜像。 请注意, fileName
应该是相对于 checkout directory 的路径,并应指向最终摘要文件的位置(此路径不应被进一步的导航指令修改)。
作为 磁盘空间清理构建功能的一部分,Docker 注册表连接会清理由 TeamCity 构建在此构建代理上创建的镜像。 该构建功能假定 Docker 镜像存储在
/var/lib/docker
在 Linux上在 Windows 上的
%ProgramData%
目录$HOME
在其他系统上的目录
位置非常重要,因为 Free disk space 功能会分析应清理哪些磁盘卷以进行构建。 如果您的 docker 守护进程使用非标准位置存放镜像/容器,则可以使用 teamcity.docker.data.path
配置参数指定该位置,最好在 buildAgent.properties
文件中指定。
添加注册表连接 按钮允许您选择那些 注册表连接 ,这些连接将在构建开始时用于自动授权到相应的注册表。 构建完成后,TeamCity 会从这些注册表中注销。
tip
另请参阅如何使用此功能,让 Free Docker Hub 用户配置文件的拉取次数增加一倍。
与 Amazon Elastic Container Registry (ECR) 的连接允许将 Docker/Podman 镜像存储在私有 AWS 注册表中。 为此,在将 Docker 注册表连接功能添加到构建配置时,需要选择这样的连接。
连接设置:
设置 | 描述 |
---|---|
AWS 区域 | 选择位于目标资源的 AWS 区域。 |
凭证类型 |
|
IAM 角色 ARN (仅适用于临时凭证) | 指定用于生成临时凭据的角色。 您需要在您的 AWS 控制台中 提前创建此角色 ,并将其分配给所有必要的权限。 |
外部 ID (仅适用于临时凭证) | 指定一个 external ID。 我们强烈建议您在使用临时凭证时始终进行定义。 这确保了只有 TeamCity 能够使用指定的 IAM 角色。 |
默认凭据提供程序链 | 启用此选项,系统会根据 default chain 自动寻找访问密钥。 |
访问密钥 ID | 指定访问密钥 ID。 查看如何获取 这里。 |
密钥访问密钥 | 指定秘密访问密钥。 查看如何获取 这里。 |
注册表 ID | 输入您的注册表 ID 或 AWS 帐户。 |
以下 Kotlin DSL 代码片段说明了如何将 Docker 注册表连接构建功能添加到您的构建配置中。
import jetbrains.buildServer.configs.kotlin.*
object MyBuildConfig : BuildType({
name = "Deploy Web (Windows)"
features {
dockerRegistryConnections {
cleanupPushedImages = true
loginToRegistry = on {
dockerRegistryId = "PROJECT_EXT_5"
}
}
}
})
tip
要快速获取目标 Docker Registry的 ID:
打开 项目设置并导航到 连接设置选项卡。
从概览表中复制连接 ID。
Thanks for your feedback!