Docker
imagen
download

Descargar imágenes de Docker: directorio, ruta, a archivo, a local, límite, error, política, secreto

In this post, we'll cover six of the most frequently asked questions about downloading Docker images. We'll start with the docker image local download command, where to find the local download path, how to download files, download limits, error resolution, and a little bit about Kubernetes.

1. El comando de descarga local de imágenes Docker

Las imágenes Docker pueden construirse directamente, pero también pueden descargarse de diferentes registros de contenedores Docker. El registro más popular es Docker Hub, pero otros incluyen GCR de Google, ECR de Amazon y ACR de MS. Los comandos para descargar imágenes Docker localmente desde estos registros son los siguientes

$ docker image pull [OPTIONS] NAME[:TAG|@DIGEST]

donde NAME es el nombre de la imagen, y TAG o DIGEST es un separador que selecciona una imagen concreta entre varias versiones de la misma imagen. Si no se especifica ningún valor de etiqueta o resumen, se descargará la imagen correspondiente a la etiqueta :latest.

Las etiquetas que se asignan a una imagen pueden cambiar de vez en cuando, por lo que es posible descargar una imagen con la misma etiqueta a lo largo del tiempo, pero que no sea la misma imagen. En este caso, puede utilizar un valor de resumen para asegurarse de que está descargando exactamente la misma imagen. Puede encontrar estos valores en la sección RepoDigests de la salida del comando inspect, como se muestra a continuación.

Para obtener más información sobre el comando docker image inspect, consulte la Image inspection post

$ docker image inspect --format '{ {.RepoDigests} }' nginx:latest
[nginx@sha256:af296b188c7b7df99ba960ca614439c99cb7cf252ed7bbc23e90cfda59092305]
Copy

Cualquier valor, etiqueta o resumen descargará una imagen con el siguiente aspecto

$ docker image pull nginx@sha256:af296b...092305
docker.io/library/nginx@sha256:af296b188c7b7df99ba960ca614439c99cb7cf252ed7bbc23e90cfda59092305: Pulling from library/nginx
Digest: sha256:af296b188c7b7df99ba960ca614439c99cb7cf252ed7bbc23e90cfda59092305
Status: Image is up to date for nginx@sha256:af296b188c7b7df99ba960ca614439c99cb7cf252ed7bbc23e90cfda59092305
docker.io/library/nginx@sha256:af296b188c7b7df99ba960ca614439c99cb7cf252ed7bbc23e90cfda59092305
 
$ docker image pull nginx:latest
latest: Pulling from library/nginx
Digest: sha256:af296b188c7b7df99ba960ca614439c99cb7cf252ed7bbc23e90cfda59092305
Status: Image is up to date for nginx:latest
docker.io/library/nginx:latest

2. Ubicación de la ruta de descarga local de la imagen

Cuando descargas una imagen Docker usando el comando pull de la Sección 1, los datos de la imagen se colocan en una ruta que Docker gestiona por ti.

Las ubicaciones típicas de las rutas locales de descarga de imágenes son las siguientes

  • Linux: /var/lib/docker/
  • MacOS: ~/Library/Containers/com.docker.docker/Data/vms/0/
  • Windows: C:\ProgramData\Docker\

Sin embargo, generalmente no es apropiado acceder a este docker directamente. Esto se debe a que Docker gestiona imágenes y contenedores con estructuras de datos y algoritmos separados. Si desea guardar y cargar imágenes como archivos, consulte la siguiente Sección 3.

3. Comandos para descargar archivos de imagen

Hay ocasiones en las que puede ser necesario guardar una imagen determinada como archivo para transferirla o distribuirla a través de una red, o con fines de copia de seguridad y restauración. Para guardar como archivo una imagen descargada localmente, utilice el siguiente formato de comando.

docker image save -o IMAGE_NAME IMAGE

En la parte IMAGE_NAME, especifique la ruta donde debe guardarse el archivo y el nombre del archivo con la extensión .tar. Si sólo especifica un nombre de archivo, se guardará automáticamente con ese nombre en el directorio actual.

$ mkdir docker-images
 
$ docker image save -o  ~/docker-images/nginx-image nginx:latest
 
$ ls docker-images
nginx-image

Una vez guardada en un archivo, la imagen puede volver a cargarse con el comando load. Especifique la ruta y el nombre del archivo de imagen después de la opción -i.

$ docker image load -i docker-images/nginx-image.tar
Loaded image: nginx:latest

4. Límites de descarga de Docker Hub

Para ofrecer un mejor servicio, Docker Hub impone diferentes límites en el número de descargas por día dependiendo del plan de usuario. El número máximo de descargas por día es el siguiente

  • Usuarios sin firma: 100 descargas/6 horas
  • Usuarios del plan gratuito: 200 descargas/6 horas
  • Usuarios del plan de pago: 5000 descargas/día

Si supera el número máximo de solicitudes de descarga, recibirá el siguiente mensaje de registro

You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limits​

5. Cómo solucionar el error de no basic auth credentials

Este mensaje de error se produce cuando tu CLI Docker no puede encontrar las credenciales que necesita para autenticarse en el registro Docker, incluyendo Docker Hub. Normalmente, esto puede ocurrir si necesitas iniciar sesión pero no lo has hecho, o si tus credenciales son incorrectas.

En estos casos, puedes intentar iniciar sesión con el comando docker login, o cerrar sesión con el comando docker logout, y luego intentar iniciar sesión de nuevo. Si el inicio de sesión tiene éxito, las credenciales se almacenan en el archivo ~/.docker/config.json.

Si el intento de inicio de sesión falla, también puede intentar hacer una copia de seguridad del archivo config.json en un directorio diferente y volver a intentarlo.

6. Docker con Kubernetes: Image Pull Policy, Docker Pull Secret

Las herramientas de orquestación de contenedores como Kubernetes establecen la política de extracción y el secreto de Docker.

6.1. Política de extracción de imágenes

La política de extracción de imágenes se refiere a una regla que determina cuándo Kubernetes debe descargar una imagen al ejecutar un contenedor con una imagen Docker. En Kubernetes, existen tres políticas.

  • Always: Esta política hace que Kubernetes siempre descargue imágenes del registro. Incluso si una imagen con la misma etiqueta ya existe localmente, será ignorada y una nueva imagen será obtenida del registro. Esta es la política por defecto cuando la etiqueta de la imagen es :latest.

  • IfNotPresent: Esta política hace que Kubernetes obtenga una imagen del registro solo si la imagen no existe localmente. Si ya existe localmente una imagen con la misma etiqueta, utilizará esa imagen. Esta es la política predeterminada cuando la etiqueta de la imagen no es :latest.

  • Never: Esta política indica a Kubernetes que no descargue imágenes del registro. Kubernetes siempre intentará utilizar una imagen disponible localmente, y devolverá un error si no existe.

Estas políticas pueden establecerse en la especificación de pods de Kubernetes.

6.2. Docker Pull Secret

Un Docker pull secret es utilizado por herramientas de orquestación de contenedores, como Kubernetes, para almacenar credenciales de acceso para un registro Docker específico. Puedes usar este secreto para descargar una imagen Docker.

Los secretos suelen estar en formato de archivo JSON, y la CLI de Kubernetes proporciona el siguiente comando para crear un secreto

$ kubectl create secret docker-registry my-secret --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL

El comando anterior crea un archivo secreto llamado my-secret, al que se puede hacer referencia en la especificación de Kubernetes Pod a través de la entrada imagePullSecrets.

7. Conclusión

En este artículo, hemos cubierto las 6 preguntas más frecuentes sobre la descarga de imágenes Docker. Hemos cubierto todo, desde el comando para descargar imágenes Docker localmente, dónde encontrar la ruta de descarga local, cómo descargar archivos, límites de descarga, solución de problemas, y un poco sobre Kubernetes. Esperamos que esto le ayude a través del proceso de descarga y almacenamiento de imágenes.

copyright for docker image pull

© 2023 All rights reserved.