👋 We've unified all of GitHub's product documentation in one place! Check out the content for REST API, GraphQL API, and Developers. Learn more on the GitHub blog.


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.

Publicar imágenes de Docker

Puedes publicar imágenes de Docker en un registro, tale como Docker Hub o GitHub Packages, como parte de tu flujo de trabajo de integración continua (IC).

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

En este artículo

¿Pudiste encontrar lo que estabas buscando?

Introducción

Esta guía te muestra cómo crear un flujo de trabajo que realiza una compilación de Docker y posteriormente publica las imágenes de Docker en Docker Hub o GitHub Packages. Con un solo flujo de trabajo, puedes publicar imágenes a un solo registro o a varios de ellos.

Nota: Si quieres subir otro registro de terceros de Docker, el ejemplo en la sección "Publicar imágenes en GitHub Packages" puede servir como plantilla.

Prerrequisitos

Te recomendamos que tengas una comprensión básica de las opciones de configuración de flujo de trabajo y cómo crear un archivo de flujo de trabajo. Para obtener más información, consulta "Configurar un flujo de trabajo."

También puede que encuentres útil el tener un entendimiento básico de lo siguiente:

Acerca de la configuración de imágenes

Esta guía asume que tienes una definición completa de una imagen de Docker almacenada en un repositorio de GitHub. Por ejemplo, tu repositorio debe contener un Dockerfile, y cualquier otro archivo que se necesite para realizar una compilación de Docker para crear una imagen.

En esta guía, utilizaremos la acción build-push-action de Docker para compilar la imagen de Docker y cargarla a uno o más registros de Docker. Para obtener más información, consulta la sección build-push-action.

Publicar imágenes en Docker Hub

Cada vez que creas un nuevo lanzamiento en GitHub, puedes activar un flujo de trabajo para publicar tu imagen. El flujo de trabajo en el ejemplo siguiente se ejecuta cuando el se activa el evento release con el tipo de actividad created. Para obtener más información en el evento release, consulta la sección"Eventos que activan flujos de trabajo.

En el siguiente ejemplo de flujo de trabajo, utilizamos la acción build-push-action de Docker para compilar la imagen de Docker y, si la compilación es exitosa, cargar la imagen compilada a Docker Hub.

Para hacer una carga en Docker hub, necesitarás tener una cuenta de Docker Hub y haber creado un repositorio ahí mismo. Para obtener más información, consulta la sección "Share images on Docker Hub" en la documentación de Docker.

Las opciones de build-push-action que se requieren para Docker Hub son:

  • username y password: Este es tu nombre de usuario y contraseña de Docker Hub. Te recomendamos almacenar tu nombre de usuario y contraseña de Docker Hub como secretos cirfrados el repositorio tu GitHub para que no se expongan en tu archivo de flujo de trabajo. Para obtener más información, consulta "Crear y usar secretos cifrados".
  • repository: Tu repositorio de Docker hub en el formato DOCKER-HUB-NAMESPACE/DOCKER-HUB-REPOSITORY.
name: Publish Docker image
on:
  release:
    types: [published]
jobs:
  push_to_registry:
    name: Push Docker image to Docker Hub
    runs-on: ubuntu-latest
    steps:
      - name: Check out the repo
        uses: actions/checkout@v2
      - name: Push to Docker Hub
        uses: docker/build-push-action@v1
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}
          repository: my-docker-hub-namespace/my-docker-hub-repository
          tag_with_ref: true

El flujo de trabajo anterior verifica el repositorio GitHub y utiliza la acción build-push-action para construir y subir la imagen de Docker. Éste configura la opción tag_with_ref de build-push-action para que etiquete automáticamente la imagen construida de Docker con la referencia de Git del evento del flujo de trabajo. Este flujo de trabajo se desencadena cuando se publica un lanzamiento de GitHub, para que la referencia sea la etiqueta de Git para el lanzamiento.

Publicar imágenes en GitHub Packages

Cada vez que creas un nuevo lanzamiento en GitHub, puedes activar un flujo de trabajo para publicar tu imagen. El flujo de trabajo en el ejemplo siguiente se ejecuta cuando el se activa el evento release con el tipo de actividad created. Para obtener más información en el evento release, consulta la sección"Eventos que activan flujos de trabajo.

En el flujo de trabajo de ejemplo que se encuentra a continuación, utilizamos la acción build-push-action para compilar la imagen de Docker y, si la compilación es exitosa, cargar la imagen compilada a GitHub Packages.

Las opciones de build-push-action requeridas para GitHub Packages son:

  • username: Puedes utilizar el contexto ${{ github.actor }} para utilizar automáticamente el nombre de usuario del usuario que desencadenó la ejecución del flujo de trabajo. Para obtener más información, consulta la sección "Sintaxis de contexto y expresión para GitHub Actions".
  • password: Puedes utilizar el secreto generado automáticamente GITHUB_TOKEN para la contraseña. Para más información, consulta "Autenticando con el GITHUB_TOKEN."
  • registry: Debe configurarse como docker.pkg.github.com.
  • repository: Debe configurarse en el formato OWNER/REPOSITORY/IMAGE_NAME. Por ejemplo, para una imagen nombrada como octo-image almacenada en GitHub en http://github.com/octo-org/octo-repo, la opción de repository debe configurarse como octo-org/octo-repo/octo-image.
name: Publish Docker image
on:
  release:
    types: [published]
jobs:
  push_to_registry:
    name: Push Docker image to GitHub Packages
    runs-on: ubuntu-latest
    steps:
      - name: Check out the repo
        uses: actions/checkout@v2
      - name: Push to GitHub Packages
        uses: docker/build-push-action@v1
        with:
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}
          registry: docker.pkg.github.com
          repository: my-org/my-repo/my-image
          tag_with_ref: true

El flujo de trabajo anterior verifica el repositorio GitHub y utiliza la acción build-push-action para construir y subir la imagen de Docker. Éste configura la opción tag_with_ref de build-push-action para que etiquete automáticamente la imagen construida de Docker con la referencia de Git del evento del flujo de trabajo. Este flujo de trabajo se desencadena cuando se publica un lanzamiento de GitHub, para que la referencia sea la etiqueta de Git para el lanzamiento.

Publicar imágenes en Docker Hub y en GitHub Packages

En un solo flujo de trabajo, puedes publicar tu imagen de Docker en varios registros utilizando la acción build-push-action para cada uno.

El siguiente flujo de trabajo de ejemplo utiliza los pasos de build-push-action de las secciones anteriores ("Publicar imágenes en Docker Hub" y "Publicar imágenes en GitHub Packages") para crear un solo flujo de trabajo que cargue ambos registros.

name: Publish Docker image
on:
  release:
    types: [published]
jobs:
  push_to_registries:
    name: Push Docker image to multiple registries
    runs-on: ubuntu-latest
    steps:
      - name: Check out the repo
        uses: actions/checkout@v2
      - name: Push to Docker Hub
        uses: docker/build-push-action@v1
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}
          repository: my-docker-hub-namespace/my-docker-hub-repository
          tag_with_ref: true
      - name: Push to GitHub Packages
        uses: docker/build-push-action@v1
        with:
          username: ${{ github.actor }}
          password: ${{ secrets.GITHUB_TOKEN }}
          registry: docker.pkg.github.com
          repository: my-org/my-repo/my-image
          tag_with_ref: true

El flujo de trabajo anterior revisa el repositorio de GitHub y utiliza la acción build-push-action dos veces para crear y cargar la imagen de Docker a Docker Hub y GitHub Packages. Para ambos pasos, configura la opción build-push-action tag_with_ref para etiquetar automáticamente la imagen de Docker con la referencia de Git para el evento del flujo de trabajo. Este flujo de trabajo se desencadena cuando se publica un lanzamiento de GitHub, así que la referencia para ambos registros será la etiqueta de Git para el lanzamiento.

¿Pudiste encontrar lo que estabas buscando?

Pregunta a una persona

¿No puedes encontrar lo que estás buscando?

Contáctanos