Skip to content

Tema:

Registros en Docker (Docker Image Registry)


Introducción

En el ecosistema de Docker, un registro de Docker es una parte fundamental que facilita el almacenamiento, distribución y acceso a imágenes de contenedores. Las imágenes son esenciales para crear y ejecutar contenedores, ya que contienen todo lo necesario para que una aplicación funcione, desde el sistema operativo base hasta las dependencias y configuraciones específicas.

Docker Hub es el registro público más popular y, de forma predeterminada, Docker busca imágenes en Docker Hub cuando ejecuta comandos como docker pull o docker run. Sin embargo, no es la única opción. Docker permite que los usuarios configuren y utilicen registros privados, ofreciendo mayor control sobre dónde se almacenan las imágenes y cómo se distribuyen. Esto es especialmente relevante para empresas o proyectos que necesitan mayor privacidad, seguridad o personalización en sus flujos de trabajo.

El uso de registros no se limita a almacenar imágenes; también es clave para integrar el ciclo de vida del desarrollo de software, desde el desarrollo y las pruebas hasta la producción. Además, los registros permiten la colaboración eficiente entre equipos, al proporcionar una forma centralizada y segura de acceder a las imágenes.


Objetivo

Objetivo General:

  • El objetivo de este tema es comprender el concepto y la importancia de los registros en Docker, así como aprender a configurar y utilizar registros públicos y privados.

Docker

Inicio de Laboratorio

Objetivo

  • Utilizar Registro de imágenes de Contenedores

Inicio de laboratorio

  1. Ingresar al servidor qué contiene al ambiente de laboratorio con credenciales proporcionadas.

  2. Realizar una prueba de conexión y login a un Image Registry Privado, este paso es unicamente para demostrar la conexión hacia una Private Image registry, no se debe proveer ningun usuario ni contraseña.

    docker login registry.suse.com
    Ctrl + c
    
    docker login registry.redhat.io
    Ctrl + c
    

  3. Realizar una conexión y login a Image Registry de Docker Hub, debes tener una cuenta activa, además debes crear un token como contraseña de acceso en: Account settings > Personal access tokens > Generate new token.

    docker login
    
    Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
    Username: your_user_name
    Password:
    WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
    Configure a credential helper to remove this warning. See
    https://docs.docker.com/engine/reference/commandline/login/#credentials-store
    Login Succeeded
    

  4. Explorar el archivo .docker/config.json

    cat ~/.docker/config.json
    
    Extraer y verificar que las credenciales, se almacenan en base64
    jq -r '.auths["https://index.docker.io/v1/"].auth' ~/.docker/config.json | base64 --decode; echo
    

  5. Descargar imagen de contenedor desde registry.suse.com

    docker pull registry.suse.com/bci/bci-base:15.4
    
    docker images
    

  6. Creando un nuevo TAG para la imagen descargada anteriormente, con lo cual será posible copiarla a otro Image Registry. Debe reemplazar el valor de "your_user_name"

    docker tag registry.suse.com/bci/bci-base:15.4 \
    docker.io/your_user_name/my-bci:version-1.0
    

  7. Listar la imágenenes de contenedores almacenadas en el HOST

    docker images
    

  8. Cargar la imagen de contenedor hacia el Image Registry Docker Hub. Debe reemplazar el valor de "your_user_name"

    docker push docker.io/your_user_name/my-bci:version-1.0
    

  9. Ingresar desde un navegador web al Image Registry Docker Hub con su cuenta de usuario y verificar la imagen subida. Dar Click en el Link: My Hub > Repositories

  10. Detener todos los contenedores creados en el HOST

    docker stop $(docker ps -qa)
    

  11. Eliminar todos los contenedores creados en el HOST

    docker rm $(docker ps -qa)
    

  12. Eliminar todas las imágenes de contenedor existentes en el HOST

    docker image prune -a -f
    

  13. Listar las imágenes de contenedor existentes en el HOST

    docker images
    

  14. Descargar la imagen de contenedor subida anteriormente a Docker Hub, debe reemplazar el valor de "your_user_name".

    docker pull docker.io/your_user_name/my-bci:version-1.0
    

  15. Listar las imágenes de contenedor existentes en el HOST

    docker images
    

  16. Ejecutar un nuevo contenedor con la imágen descargada anteriormente

    docker run -it --name my-bci docker.io/your_user_name/my-bci:version-1.0
    
    exit
    

  17. Instalación de herramienta SKOPEO. Skopeo es una herramienta de línea de comandos utilizada para gestionar imágenes de contenedores sin necesidad de un daemon como Docker. Es especialmente útil para copiar, inspeccionar y transferir imágenes entre diferentes registros y formatos.

    sudo yum -y install skopeo
    

  18. Inspeccionar un repositorio de una imágen de contenedor:

    skopeo inspect docker://docker.io/library/nginx:latest
    

  19. Realizar una copia de una imagen de contenedor desde Docker Hub a un Repositorio propio, debe reemplazar el valor de "your_user_name".

    skopeo copy docker://docker.io/httpd:latest \
    docker://docker.io/your_user_name/my-apache:1.0 \
    --dest-authfile $HOME/.docker/config.json
    

  20. Ingresar desde un navegador web al Image Registry Docker Hub con su cuenta de usuario y verificar que la imagen este disponible. My Hub > Repositories y verificar que el repositorio my-apache existe.

  21. Descargar la imágen subida anteriormente por medio de Skopeo:

    docker pull your_user_name/my-apache:1.0
    

  22. Iniciar un nuevo contenedor con la imágen subida anteriormente

    docker run --name my-apache -p 8080:80 \
    -d your_user_name/my-apache:1.0 
    

  23. Verificar el servicio web en el contenedor creado anteriormente:

    curl http://localhost:8080
    
    Debe aparecer un mensaje como el siguiente:
    <html><body><h1>It works!</h1></body></html>
    

  24. Limpiar el ambiente: Detener todos los contenedores creados en el HOST

    docker stop $(docker ps -qa)
    
    Eliminar todos los contenedores creados en el HOST
    docker rm $(docker ps -qa)
    
    Eliminar todas la imágenes de contenedores:
    docker image prune -a -f