docker - 在不受控制的 CI 环境中连接到不安全的本地 docker 注册表
问题描述
我正在构建一个在 docker 注册表上执行操作的微服务。
我正在构建的微服务有一个测试,它通过Docker Hub 中的 docker-registry 映像启动一个 docker-registry ,因此微服务可以连接到它、设置它、处理它等等......
CI 中的测试失败:Docker 客户端无法连接到测试注册表,因为它不安全。这是在 CI 中,并且每次都是动态的、不同的随机 ip/port,并且 docker 守护进程被其他并行测试使用......所以让测试编辑全局 jsons 并重新启动 docker 守护进程似乎是一个糟糕的解决方案。
有没有人解决这个问题?你如何在 CI 中测试与 docker-registry 的集成?我注定要修改全局 docker jsons 并重新启动/触发重新加载配置吗?
一些细节:构建工具是 Bazel 并在 GCB 中运行,因此测试本身在 Google 云上的 RBE 工作人员中运行,这些工作人员是隔离的,在运行测试时没有网络访问权限,我不能真正配置太多,不是我的机器,每次测试都是氡气机等等......
解决方案
我们最终启动了另一个容器,其中包含一个 docker daemon(没有安装外部 docker daemon socket,所以它实际上是另一个 docker daemon 实例)。
我们在闲暇时这样做,所以只有在我们知道私有注册表地址并将 docker 守护进程配置为使用不安全的注册表标志启动之后。
为了让容器进行通信,我们让它们的容器有一个名称并共享一个网络。
推荐阅读
- fpga - Chisel(很好)支持哪些 FPGA 供应商板?
- amazon-web-services - 如何在云形成模板中连接 lambda 和 api 网关?
- google-cloud-platform - 在本地环境中,结果值和数据流结果值不同
- javascript - puppeteer:第一个链接有效,其他链接无效
- azure - 如何在 .NET Core 应用程序中控制自适应采样
- css - CSS 属性来区分一个人是手动输入了输入值还是从自动完成建议中选择了它?
- python - while loop menu 继续循环第二个菜单
- javascript - 反转没有 jquery 的 CSS 动画
- r - Plotly:如何在 3D 图中为相机视图设置手动缩放?
- c# - 如何使用 Autofac 和 Winforms 来注入依赖项