跳到主要内容

注册表

Woodpecker 提供在仓库设置中添加容器注册表的能力。添加注册表允许您在管道中使用这些镜像作为步骤时,从容器注册表中认证和拉取私有镜像。使用注册表凭据还可以帮助您避免从公共注册表拉取镜像时的速率限制。

来自私有注册表的镜像

您必须在 UI 中提供注册表凭据才能拉取 YAML 配置文件中定义的私有容器镜像。

这些凭据永远不会暴露给您的步骤,这意味着它们不能用于推送,并且在拉取请求中是安全的,例如。推送到注册表仍然需要为适当的插件设置凭据。

使用私有镜像的示例配置:

 steps:
- name: build
+ image: gcr.io/custom/golang
commands:
- go build
- go test

Woodpecker 将注册表主机名与 YAML 中的每个镜像匹配。如果主机名匹配,则使用注册表凭据认证到您的注册表并拉取镜像。请注意,注册表凭据由 Woodpecker 代理使用,永远不会暴露给您的构建容器。

示例注册表主机名:

  • 镜像 gcr.io/foo/bar 的主机名是 gcr.io
  • 镜像 foo/bar 的主机名是 docker.io
  • 镜像 qux.com:8000/foo/bar 的主机名是 qux.com:8000

示例注册表主机名匹配逻辑:

  • 主机名 gcr.io 匹配镜像 gcr.io/foo/bar
  • 主机名 docker.io 匹配 golang
  • 主机名 docker.io 匹配 library/golang
  • 主机名 docker.io 匹配 bradrydzewski/golang
  • 主机名 docker.io 匹配 bradrydzewski/golang:latest

全局注册表支持

要使私有注册表全局可用,请查看服务器配置文档

GCR 注册表支持

有关配置访问 Google Container Registry 的具体细节,请查看此处的文档。

本地镜像

注意

为此,需要特权权限,只有管理员可用。此外,这仅在使用单个代理时有效。

可以通过将 docker 套接字挂载为卷来构建本地镜像。

在项目根目录有 Dockerfile 的情况下:

steps:
- name: build-image
image: docker
commands:
- docker build --rm -t local/project-image .
volumes:
- /var/run/docker.sock:/var/run/docker.sock

- name: build-project
image: local/project-image
commands:
- ./build.sh