我们经常发布文档更新,此页面的翻译可能仍在进行中。有关最新信息,请访问英文文档。如果此页面上的翻译有问题,请告诉我们

配置 Docker 用于 GitHub Package Registry

您可以配置 Docker 客户端以使用 GitHub 包注册表 发布和检索 docker 镜像。

本文内容

向 GitHub 包注册表 验证

Using the docker command, you can authenticate to GitHub 包注册表 using your GitHub username and a personal access token with the read:packages and write:packages scopes. 对于私有仓库,您的个人访问令牌还必须具有 repo 作用域。 更多信息请参阅“创建用于命令行的个人访问令牌”。

$ docker login docker.pkg.github.com -u USERNAME -p TOKEN

发布包

GitHub 包注册表 支持每个仓库的多个顶层 Docker 镜像。

  1. 使用 docker images 命令确定 docker 镜像的名称和 ID:

    $ docker images
    > < >
    > REPOSITORY        TAG        IMAGE ID       CREATED      SIZE
    > IMAGE_NAME        VERSION    IMAGE_ID       4 weeks ago  1.11MB
  2. 使用上一步中的 ID,标记 docker 镜像,标记内容包括要将其推送到的仓库的端点、镜像名称和版本。 由于不支持大写字母,因此,即使您的 GitHub 用户或组织名称中包含大写字母,也必须对仓库所有者使用小写字母。

    $ docker tag IMAGE_ID docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION

    Alternatively, you can refer to the local name of your docker image instead of the image ID.

    $ docker tag local-image docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION

    If you are building a new docker image from scratch, you can specify GitHub 包注册表 at build time.

    $ docker build -t docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION PATH
  3. Push the image to GitHub 包注册表:

    $ docker push docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION
  4. 您可以通过以下 URL 访问您的包(使用您的 GitHub 用户或组织名称替换 OWNER,使用您的仓库名称替换 REPOSITORY):

https://github.com/OWNER/REPOSITORY/packages

For example, to push version 1.0 of an image called monalisa to the octocat/octo-app repository, the commands would be:

$ docker images

> REPOSITORY           TAG      IMAGE ID      CREATED      SIZE
> monalisa             1.0      c75bebcdd211  4 weeks ago  1.11MB

# Tag the image with the OWNER/REPO/IMAGE_NAME format
$ docker tag c75bebcdd211 docker.pkg.github.com/octocat/octo-app/monalisa:1.0

# Push the image to GitHub 包注册表
$ docker push docker.pkg.github.com/octocat/octo-app/monalisa:1.0

您也可以参考本地映像名称。

# Tag the image with the OWNER/REPO/IMAGE_NAME format
$ docker tag monalisa:1.0 docker.pkg.github.com/octocat/octo-app/monalisa:1.0

# Push the image to GitHub 包注册表
$ docker push docker.pkg.github.com/octocat/octo-app/monalisa:1.0

从头开始构建 monalisa docker 映像时应如下发布:

# Build the image with the docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION format
# Assumes Dockerfile in the current working directory (.)
$ docker build -t docker.pkg.github.com/octocat/octo-app/monalisa:1.0 .

# Push the image to GitHub 包注册表
$ docker push docker.pkg.github.com/octocat/octo-app/monalisa:1.0

接收包注册表事件

在发布或更新包时,您可以接收 web 挂钩事件。更多信息请参阅“GitHub 开发者文档中的 RegistryPackageEvent”。

安装包

您可以使用含镜像的仓库和标记名称的 docker pull 命令从 GitHub 包注册表 安装 docker 镜像。 由于不支持大写字母,因此,即使您的 GitHub 用户或组织名称中包含大写字母,也必须对仓库所有者使用小写字母。

$ docker pull docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:TAG_NAME

删除包

To avoid breaking projects that may depend on your packages, GitHub 包注册表 does not support deleting published versions of a package or an entire published package for public repositories. Under special circumstances, such as for legal reasons or to conform with GDPR standards, you can request deleting a package through GitHub 支持. Contact GitHub 支持 using our contact form and the subject line "GitHub 包注册表."

You can delete private packages via GitHub's API. For more information, see "Access to package version deletion" in GitHub 开发者文档.

问问别人

找不到要找的内容?

联系我们