我有:
- 团队城市 CI
- TeamCity 代理,作为 Windows 服务安装在 Windows 10 中
- 一些带有集成测试的 Java 项目,基于TestContainers框架。
- Sonatype Nexus 实例,配置为私有 docker 注册表
基于 TestContainers 的测试需要 docker 在项目构建期间可用。执行测试所需的所有图像都位于 Nexus 中。这反过来意味着 - 为了在 CI 上执行测试,我应该将 docker 验证到 Nexus 以便能够拉取它们。这就是问题所在。
我不明白我应该如何对 docker 进行身份验证,即 Windows 服务(TeamCity 代理)。
通常,它由docker login
. 我尝试docker login
从代理主机上的管理员 PowerShell 执行,它确实成功了 - 我现在可以从管理员控制台中提取图像。但尝试在 TeamCity 代理上运行测试失败,在尝试从 Nexus 拉取图像时面临 401 Unauthorized。就像,服务是从某个用户那里执行的,而这docker login
并没有完成。
我应该如何让 docker 授权进入 Windows 10 TeamCity 代理服务的私有 docker 注册表?
您可以在 Teamcity 中设置 docker 授权,方法是转到 Build Configuration -> Build Features -> Add Build Feature -> Docker Support -> Add Registry Connection