Frecuentemente publicamos actualizaciones de nuestra documentación. Es posible que la traducción de esta página esté en curso. Para conocer la información más actual, visita la documentación en inglés. Si existe un problema con las traducciones en esta página, por favor infórmanos.

Migrating to GitHub Container Registry for Docker images

If you've used the GitHub Packages Docker registry to store Docker images, you can migrate to the new container registry.

Paquetes de GitHub is available with GitHub Free, GitHub Pro, GitHub Free for organizations, GitHub Team, GitHub Enterprise Cloud, Servidor de GitHub Enterprise 2.22, and GitHub One.


Paquetes de GitHub no está disponible para repositorios privados que pertenezcan a cuentas que utilicen planes tradicionales por repositorio. Paquetes de GitHub se encuentra disponible con GitHub Free, GitHub Pro, GitHub Free para organizaciones, GitHub Team, GitHub Enterprise Cloud, y GitHub One. Para obtener más información, consulta la sección "Productos de GitHub".

En este artículo

¿Te ayudó este documento?

Help us make these docs great!

All GitHub docs are open source. See something that's wrong or unclear? Submit a pull request.

Make a contribution

O, learn how to contribute.

Key differences between GitHub Container Registry and the Docker package registry

Note: GitHub Container Registry is currently in public beta and subject to change. Currently, GitHub Container Registry only supports Docker image formats. During the beta, storage and bandwidth is free. Para obtener más información, consulta "Acerca de GitHub Container Registry".

The GitHub Container Registry supersedes the existing Packages Docker registry and is optimized to support some of the unique needs of containers.

With the container registry you can:

  • Store container images within your organization and user account, rather than a repository.
  • Set fine-grained permissions and visibility independent of repository permissions and visibility.
  • Access public container images anonymously.

Para obtener más información, consulta "Acerca de GitHub Container Registry".

Billing changes

During the GitHub Container Registry beta, both the new container registry and existing Paquetes de GitHub Docker registry will be free. For more information about the Paquetes de GitHub Docker registry, see "Configuring Docker for use with Paquetes de GitHub."

After the beta, the same billing and storage rates that other Paquetes de GitHub registries use will apply to the container registry. For more information, see "About billing for Paquetes de GitHub."

Domain changes

The domain for the container registry is ghcr.io.

RegistryURL de Ejemplo
Paquetes de GitHub Docker registrydocker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME
GitHub Container Registryghcr.io/OWNER/IMAGE_NAME

Authenticating with the container registry

You will need to authenticate to the container registry with the base URL ghcr.io. We recommend creating a new access token for using the container registry.

Migrating a Docker image using the Docker CLI

To move Docker images that you host on Paquetes de GitHub Docker registry, you must republish the images to container registry. We recommend republishing your existing Docker images using the command line on your local machine.

  1. Sign in to the Docker registry using a temporary PAT with at least the read:packages scope. This PAT will only be used to sign in to the Docker registry to pull down images and can be deleted afterward.

    $ echo $READ_PACKAGES_TOKEN | docker login docker.pkg.github.com -u USERNAME --password-stdin
  2. Pull down the image you'd like to migrate, replacing OWNER with the name of the user or organization account that owns the repository, REPOSITORY with the name of the repository containing your project, IMAGE_NAME with name of the package or image, VERSION with tag for the image you want to install. For example, docker pull docker.pkg.github.com/octo-org/octoshift/octoshift:latest pulls the latest tag of the octoshift/octoshift image in the octo-org organization.

    $ docker pull docker.pkg.github.com/OWNER/REPOSITORY/IMAGE_NAME:VERSION
  3. Re-tag the image with the new domain and a new image name. Para obtener más información, consulta "Etiqueta Docker" en la documentación de Docker. Use the same URL that you used in the previous step for the SOURCE URL. Replace the TARGET_OWNER with the user or organization that you are migrating the container image to and replace the TARGET_IMAGE_NAME with the new container registry image name.

    $ docker tag docker.pkg.github.com/SOURCE_OWNER/SOURCE_REPOSITORY/SOURCE_IMAGE_NAME:VERSION ghcr.io/TARGET_OWNER/TARGET_IMAGE_NAME:VERSION
  4. Sign in to the new container registry. We recommend creating a new PAT limited to the read:packages and write:packages scopes since you no longer need the repo scope and your previous PAT may not have the write:packages scope.

    $ echo $CR_PAT | docker login ghcr.io -u USERNAME --password-stdin
  5. Push your re-tagged image to the container registry.

    $ docker push ghcr.io/OWNER/IMAGE_NAME:VERSION

Updating your GitHub Actions workflow

If you have a GitHub Actions workflow that uses a Docker image from the Paquetes de GitHub Docker registry, you may want to update your workflow to the container registry to allow for anonymous access for public container images, finer-grain access permissions, and better storage and bandwidth compatibility for containers.

  1. Migrate your Docker images to the new container registry at ghcr.io. For an example, see "Migrating a Docker image using the Docker CLI."

  2. In your GitHub Actions workflow file, update the package url from https://docker.pkg.github.com to ghcr.io.

  3. Add your new container registry authentication personal access token (PAT) as a GitHub ACtions secret. GitHub Container Registry does not support using GITHUB_TOKEN for your PAT so you must use a different custom variable, such as CR_PAT. Para obtener más información, consulta "Crear y almacenar secretos cifrados".

  4. In your GitHub Actions workflow file, update the authentication PAT by replacing your Docker registry PAT (${{ secrets.GITHUB_TOKEN }}) with a new variable for your container registry PAT, such as ${{ secrets.CR_PAT }}.

Example of updated workflow

If part of your workflow accessed a Docker image hosted by the Docker registry like this:

echo ${{ secrets.GITHUB_TOKEN }} | docker login https://docker.pkg.github.com -u $GITHUB_ACTOR --password-stdin
docker pull docker.pkg.github.com/github/octoshift/octoshift:latest
docker build . --tag docker.pkg.github.com/github/octoshift/octoshift:$GITHUB_SHA --cache-from docker.pkg.github.com/github/octoshift/octoshift:latest
docker push docker.pkg.github.com/github/octoshift/octoshift:$GITHUB_SHA

Then you'll need to update your workflow with the new container registry URL and PAT like this:

# new login with new container registry url and PAT
echo ${{ secrets.CR_PAT }} | docker login ghcr.io -u $GITHUB_ACTOR --password-stdin
# new container registry urls added
docker pull ghcr.io/github/octoshift:latest
docker build . --tag ghcr.io/github/octoshift:$GITHUB_SHA --cache-from ghcr.io/github/octoshift:latest
docker push ghcr.io/github/octoshift:$GITHUB_SHA

¿Te ayudó este documento?

Help us make these docs great!

All GitHub docs are open source. See something that's wrong or unclear? Submit a pull request.

Make a contribution

O, learn how to contribute.