GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Introducción a las imágenes de Docker preconstruidas

Las imágenes son el componente fundamental de Docker. En esta guía, analizaremos qué son las imágenes acoplables, cómo crearlas, cómo administrarlas y cómo usarlas.

Comencemos.

Requisitos

  • Antes de comenzar a usar imágenes de Docker, debe instalar Docker en su sistema.
  • Esta guía usa Ubuntu, pero los pasos deberían ser similares para otras distribuciones.
  • Una cuenta de usuario con privilegios de root.

¿Qué debe saber?

Antes de comenzar a trabajar con imágenes acoplables, es importante que sepa qué son.

Las imágenes de Docker son los componentes fundamentales de Docker. Docker usa imágenes para crear contenedores. Las imágenes son esencialmente plantillas que contienen toda la información necesaria para crear un contenedor, como el código, las bibliotecas y el tiempo de ejecución.

Un contenedor acoplable es una instancia en tiempo de ejecución de una imagen. Contiene todo lo que contiene la imagen, además de cualquier cambio o adición que realice mientras se ejecuta el contenedor. Por ejemplo, si instala una nueva aplicación en su sistema, la nueva aplicación se instalará en su contenedor.

Administración de imágenes con CLI

La gestión de imágenes con la CLI de Docker es imprescindible para los administradores de Docker. La CLI de Docker es una herramienta poderosa que le brinda un control completo sobre sus imágenes y contenedores. En esta sección, aprenderá a usar la CLI de Docker para administrar sus imágenes.

1. Ejecute el siguiente comando para asegurarse de que Docker se esté ejecutando.

sudo systemctl status docker

2. Si Docker no se está ejecutando, inícielo con el siguiente comando.

sudo systemctl start docker

3. Agregue su cuenta de usuario al grupo docker. Cierre sesión y vuelva a iniciar sesión para que los cambios surtan efecto.

sudo usermod -aG docker $(whoami)

4. Si ejecuta el comando de imagen de la ventana acoplable, verá una lista de todas las opciones disponibles para el comando de imagen de la ventana acoplable.

docker image

Como se muestra a continuación, el comando docker image tiene muchas opciones, pero algunas de las más comunes son:

  • ls :lista las imágenes en su sistema.
  • tirar :extraer una imagen de un registro.
  • empujar :enviar una imagen a un registro.
  • crear :Crea una nueva imagen desde un Dockerfile.
  • rm :eliminar una imagen de su sistema.
  • etiqueta: Etiqueta una imagen con un nombre.

Para comenzar, echemos un vistazo a cómo enumerar las imágenes en su sistema.

5. Ejecute el comando docker image ls para enumerar las imágenes en su host. El comando docker image ls enumera todas las imágenes en su host, incluidos los repositorios de los que se extrajeron. El ID, el repositorio, la etiqueta y el tamaño de la imagen.

docker image ls

Suponga que desea eliminar una imagen de su host. Puede usar el comando rm. Puede usar el nombre de la imagen o el ID de la imagen para eliminar una imagen.

docker image rm <image-name>
docker image rm <image-id>

En caso de que utilice la ID, asegúrese de que los primeros caracteres de la ID sean exclusivos de las imágenes de la lista. En otras palabras, las primeras letras del ID no deben ser utilizadas por ninguna otra imagen.

6. Por ejemplo, para eliminar la imagen ubuntu:12.04, puede usar cualquiera de los siguientes comandos. Tenga en cuenta que solo podemos usar los primeros caracteres de la ID (5b1) para eliminar la imagen, ya que no hay otras imágenes con esos primeros caracteres.

docker image rm ubuntu:12.04
docker image rm 5b1

La imagen de ubuntu:12.04 se eliminará de su host junto con todas las capas que se utilizan para crear la imagen, como se muestra a continuación.

7. Vuelva a enumerar las imágenes en su sistema para verificar que la imagen ubuntu:12.04 ya no se encuentra en la lista.

docker image ls

Tenga en cuenta que el comando docker image ls y el comando docker images hacen exactamente lo mismo. Sin embargo, el segundo ahora está obsoleto ya que Docker prefiere que los desarrolladores usen el comando docker con sus subcomandos correctos. Tenemos lo mismo con el comando docker rmi. Este comando se usa para eliminar una imagen y todas sus capas exactamente igual que la imagen acoplable rm. Docker recomienda usar docker rm con sus subcomandos correctos.

docker image ls
docker images

Tenemos la misma salida.

Hasta ahora, ha eliminado una imagen sin usar a la vez. ¿Qué sucede si desea eliminar dos o más imágenes no utilizadas al mismo tiempo?

Aquí es donde el comando podar es útil. El comando podar se puede usar para eliminar todas las imágenes no utilizadas de su host de una sola vez. Puede utilizar el comando podar para eliminar todas las imágenes colgantes, todas las imágenes no utilizadas o una combinación de ambas. Las imágenes colgantes son las imágenes que no tienen al menos un contenedor asociado.

8. Ejecute el comando de eliminación de imágenes de la ventana acoplable para eliminar todas las imágenes no utilizadas/colgantes de su sistema.

docker image prune

Como puede ver, el comando podar eliminó todas las imágenes no utilizadas y sus capas de su host y le ahorró mucho espacio en disco en el proceso.

9. Enumere las imágenes en su host nuevamente para verificar que las imágenes realmente hayan desaparecido. Ahora que sabe cómo enumerar, eliminar y podar imágenes de su host. Estos comandos básicos te ayudarán a mantener tu sistema limpio y organizado.

docker image ls

Inspección de imágenes de Docker

Puede pensar en las imágenes y los contenedores de Docker como cajas negras místicas. Te estás preguntando qué tipo de magia está pasando dentro de ellos. En esta sección, disipamos parte del misticismo al observar lo que hay en una imagen de Docker y cómo puede usar esa información para su beneficio.

1. Docker ofrece una forma de inspeccionar el contenido de una imagen. El comando docker inspect toma una ruta a una imagen e imprime una gran cantidad de información sobre ella, como se muestra en el siguiente ejemplo.

docker inspect ubuntu

Como se muestra a continuación, el resultado del comando anterior contiene mucha información. Está viendo toda la información aquí en un formato llamado matriz JSON.

La información de la salida se muestra como un almacén de clave-valor. Puede usar una herramienta de Linux como la tubería (|) para grep la salida de una palabra clave específica. Luego, puede usar la salida canalizada para cualquier propósito que desee. Los siguientes ejemplos demuestran cómo puede hacer esto.

2. Ejecute el siguiente comando para guardar el resultado del comando docker inspect en un archivo llamado image-inspect.txt.

docker image inspect ubuntu > image-inspect.txt

3. Luego, use un editor de su elección para abrir el archivo e inspeccionar su contenido.

sudo nano image-inspect.txt

La salida del comando docker inspect contiene una gran cantidad de información sobre una imagen, como se muestra a continuación. Dentro del editor, puede navegar fácilmente como desplazarse hacia arriba o hacia abajo en el editor para inspeccionar información diferente. Puede editar la información si lo desea.

También puede usar el argumento --format para formatear la salida de una manera específica.

4. Por ejemplo, para imprimir el ID de la imagen de ubuntu, puede usar el siguiente comando.

docker image inspect ubuntu --format='{{.ID}}'

5. Enumere la imagen para verificar la identificación de la imagen.

docker image ls

6. Ejecute el siguiente comando para canalizar la salida del comando docker inspect al comando more. Esto le permitirá paginar a través de la salida para que pueda ver toda la información que contiene.

docker image inspect ubuntu | more

Esta vez, verá el Hostname (b32714f341a6 ) en ContainerConfig sección, como se muestra a continuación.

7. ¿Qué sucede si desea el valor del nombre de host (b32714f341a6 ) ¿solamente? Puede lograr esto ejecutando el siguiente comando.

docker image inspect ubuntu --format='{{.ContainerConfig.Hostname}}'

Como puede ver, puede usar el comando docker inspect con las herramientas de Linux para filtrar un poco más. Como un rango. Por ejemplo, para enumerar todas las direcciones IP en el rango 192.168.0.0/16. E incluso puede combinarlo con otras herramientas de secuencias de comandos para hacer cosas aún más interesantes.

Uso de etiquetas Docker 

A medida que continúe trabajando con imágenes de Docker, querrá comenzar a usar etiquetas. Las etiquetas le permiten identificar y administrar fácilmente sus imágenes. Por ejemplo, puede crear una etiqueta para cada entorno en el que se utiliza una imagen, o para cada cliente o cliente para el que se utiliza una imagen. Esto facilita encontrar la imagen específica que necesita y realizar un seguimiento de qué imágenes se han utilizado para qué fines.

La sintaxis para agregar una etiqueta a una imagen es la siguiente:

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

Su etiqueta puede ser cualquier cadena ASCII válida y puede contener letras mayúsculas y minúsculas, dígitos, guiones bajos, puntos y guiones. No puede comenzar con un punto o un guión, y no debe exceder los 128 caracteres de longitud. Veamos un ejemplo.

1. Para poder agregar una etiqueta a una imagen, primero necesitamos saber el nombre o el ID de la imagen que queremos etiquetar. Podemos enumerar todas las imágenes disponibles en nuestro sistema ejecutando el siguiente comando:

docker image ls

2. Ahora ejecute el siguiente comando para agregar la etiqueta "myubuntu" a la imagen.

docker tag ubuntu:latest ubuntu:myubuntu

3. Ahora, si volvemos a ejecutar el comando docker image ls, podemos ver que nuestra imagen ha sido etiquetada con "myubuntu".

Tenga en cuenta que las etiquetas son solo alias. Lo que significa que una imagen puede tener varias etiquetas, pero todas se refieren a la misma imagen de origen. Por lo tanto, puede usar la etiqueta que desee, siempre que tenga sentido para usted. Y es una buena idea agregar etiquetas cuando cree imágenes para que pueda realizar un seguimiento de ellas fácilmente más adelante.

4. Echemos un vistazo a un ejemplo más. Supongamos que queremos crear una imagen de Ubuntu con la etiqueta "original". Podemos hacer esto ejecutando el siguiente comando:

docker tag myubuntu:latest myubuntu:original

El comando anterior creará una imagen etiquetada con "original" que se basa en la imagen etiquetada con "más reciente". Ahora tenemos dos imágenes de myubuntu:una etiquetada con latest y uno etiquetado con original , pero apuntan al mismo ID de imagen de origen (2b4cba85892a ).

Trabajando con registros de Docker

Ahora que tenemos una comprensión básica de lo que son las imágenes de Docker, echemos un vistazo al trabajo con registros. Docker Hub es el registro público más popular, pero hay otras opciones disponibles.

Docker Hub es un registro público de uso gratuito tanto para fines personales como comerciales. Tiene una amplia variedad de imágenes disponibles, y también puedes crear tus propias imágenes y compartirlas con otros. Para usar Docker Hub, simplemente necesita crear una cuenta y luego instalar el cliente docker. A continuación, puede utilizar el comando de búsqueda de la ventana acoplable para buscar imágenes y el comando de extracción de la ventana acoplable para descargarlas.

Hasta ahora, hemos estado trabajando con la imagen de ubuntu que está disponible en Docker Hub, un registro público de Docker. Sin embargo, también puede crear un registro privado para almacenar sus imágenes.

Implementación de un registro privado de Docker

Hay algunas razones por las que podría querer usar un registro privado:

  • Para almacenar imágenes que son solo para uso interno. Tal vez tenga imágenes que contengan información confidencial y no quiera que estén disponibles públicamente. O tal vez desee realizar un seguimiento de las imágenes que se han utilizado en su entorno y no quiere que otros puedan descargarlas sin su permiso.
  • Para acelerar las descargas de imágenes en su tubería de distribución CI/CD almacenándolas en caché localmente. Ejecutar su propio registro y almacenarlo por su cuenta es una excelente manera de vincularlo y mejorar su sistema CI/CD.

1. Compruebe si su host docker está listo para crear un registro local.

docker version

2. Ejecute el siguiente comando docker run para tener un registro local y privado en funcionamiento. donde:

  • -p 5000:5000 =asigna el puerto 5000 en el host acoplable al puerto 5000 en el contenedor
  • --restart=always =asegura que el contenedor siempre se reinicie si falla
  • --name registro =nombre de su registro privado
  • registry:2 =la imagen que se usará para crear el contenedor de registro
docker run -d -p 5000:5000 --restart=always --name registry registry:2

3. Ejecute el siguiente comando para enumerar todos los contenedores en ejecución en su docker host.

docker ps 

Verá el siguiente resultado. Este resultado indica que el contenedor de registro está activo y ejecutándose en su host docker. La notación :::5000->5000/tcp es un atajo que asigna el puerto en el host acoplable al puerto en el contenedor de registro.

Ahora que tenemos nuestro registro privado en funcionamiento, echemos un vistazo a cómo agregarle imágenes. El siguiente ejemplo muestra cómo agregar la imagen de ubuntu al registro. Primero, deberá extraer la imagen de Docker Hub a su host local y asignarle una etiqueta específica. Luego empujará la imagen recién etiquetada a su registro privado. Finalmente, elimine la imagen de ubuntu de su host local y extraiga la imagen de su registro privado para probarla.

4. Ejecute el siguiente comando para descargar la imagen de ubuntu con la etiqueta 20.04 desde Docker Hub a su host local.

 docker image pull ubuntu:20.04

5. A continuación, ejecute el siguiente comando para etiquetar la imagen de Ubuntu descargada como "my-ubuntu". Puede usar cualquier etiqueta que desee, pero es una buena idea usar algo que tenga sentido para su organización.

docker tag ubuntu:20.04 localhost:5000/my-ubuntu 

6. Ejecute el siguiente comando para enviar la imagen recién etiquetada a su registro privado que se ejecuta en el puerto localhost:5000.

docker push localhost:5000/my-ubuntu

7. Ejecute el siguiente comando para eliminar las imágenes de ubuntu almacenadas localmente en caché de su host local para probar su registro privado.

docker image remove ubuntu:20.04 && docker image remove localhost:5000/my-ubuntu

8. Una vez que se hayan eliminado las imágenes de ubuntu almacenadas en caché local, puede ejecutar el siguiente comando para extraer la imagen de su registro privado.

docker pull localhost:5000/my-ubuntu

9. Ejecute el siguiente comando para enumerar todas las imágenes en su host docker.

docker image ls

Verá el my-ubuntu imagen listada como extraída de su registro privado, como se muestra a continuación. Este resultado confirma que la imagen se extrajo con éxito de su registro privado y que su registro privado funciona correctamente.

Imágenes de empujar, tirar y firmar

Docker ofrece algunas opciones de línea de comandos para empujar, tirar y buscar imágenes. En esta sección, aprenderá cómo usar esos comandos para administrar sus imágenes en registros desde su línea de comandos en su host. Este ejemplo usa Docker Hub para demostrarlo, pero podría usar cualquier otro registro.

1. Ejecute el comando de inicio de sesión de Docker para iniciar sesión en el registro de Docker Hub. Proporcione su nombre de usuario y contraseña cuando se le solicite. Si no tiene una cuenta de Docker Hub, puede crear una gratis en https://hub.docker.com/.

docker login

2. Una vez que haya iniciado sesión, estará listo para enviar sus imágenes. Suponga que desea enviar la imagen más reciente de ubuntu a Docker Hub. También debe etiquetar la imagen con un nombre significativo para que pueda hacer referencia a ella fácilmente en el futuro. En este ejemplo, etiquetará la imagen como howtoforge/ubuntu:latest. Siéntase libre de usar el nombre de la etiqueta que desee.

docker tag ubuntu:latest howtoforge/ubuntu:latest
docker push howtoforge/ubuntu:latest

3. Abra su navegador web y vaya a Docker Hub. Allí verás tu imagen. Este repositorio se creó en función de su nombre de usuario y la etiqueta que utilizó. En este ejemplo, el repositorio es howtoforge/ubuntu . Navegue a la pestaña de etiquetas y verá que su etiqueta se aplicó con éxito (más reciente ).

4. Ejecute el siguiente comando para eliminar la imagen local de ubuntu para probar la extracción.

docker image rm howtoforge/ubuntu

Haga una lista de las imágenes en su sistema para verificar que se eliminó la imagen de ubuntu.

docker image ls

5. Ejecute el siguiente comando para descargar la imagen my-ubuntu desde su Docker Hub.

docker pull howtoforge/ubuntu

6. Vuelva a enumerar las imágenes en su host para verificar que se extrajo la imagen de ubuntu. Debería ver la imagen de my-ubuntu en su sistema.

docker image ls

Mientras trabaja con imágenes, es posible que desee buscar imágenes específicas en los registros de Docker. Puede usar el comando de búsqueda de Docker para buscar imágenes en los registros de Docker.

7. Ejecute el comando de búsqueda de docker para ver todas las opciones y parámetros disponibles.

man docker search

Debería ver el siguiente resultado. Puede ver una opción de filtrado útil como:

  • estrellas= :filtre los resultados de búsqueda por la cantidad de estrellas que tiene la imagen en Docker Hub. Puede usar esto para encontrar las imágenes más populares.
  • está-automatizado=(verdadero|falso) :filtre los resultados de búsqueda para incluir o excluir compilaciones automatizadas. Puede usar esto para buscar imágenes que sean o no compilaciones automáticas.
  • es-oficial=(verdadero|falso) :filtra los resultados de la búsqueda para incluir o excluir imágenes oficiales. Puede usar esto para buscar imágenes que sean compatibles oficialmente con la empresa detrás de la imagen. Por ejemplo, Ubuntu es la empresa oficial detrás de la imagen de Ubuntu. Nginx es la empresa oficial detrás de la imagen de Nginx. Siempre debe usar imágenes oficiales cuando sea posible, ya que han sido probadas por la empresa y es más probable que sean estables. Cuando encuentre problemas con una imagen oficial, puede obtener ayuda de la empresa que proporciona la imagen.

8. Por ejemplo, ejecute el comando docker search --filter=stars=4 ubuntu para buscar la imagen de ubuntu con 4 o más estrellas en Docker Hub.

docker search --filter=stars=4 ubuntu

9. Ejecute el siguiente comando para buscar la imagen de ubuntu que es una imagen oficial de Ubuntu.

docker search --filter=is-official=true ubuntu

El resultado debe ser una lista de repositorios que contienen la imagen de ubuntu e indica que es una imagen oficial de Ubuntu (OK ), como se muestra a continuación.

10. Ejecute el siguiente comando para buscar la imagen de ubuntu que tenga una calificación de al menos 100 estrellas en Docker Hub y sea una imagen oficial de Ubuntu.

docker search --filter="stars=100" --filter=is-official=true ubuntu

Las imágenes de Docker son una excelente manera de almacenar el código y la configuración de su aplicación. Pero al mismo tiempo, es fácil acumular muchas imágenes sin usar, especialmente si está probando diferentes aplicaciones o probando diferentes configuraciones. Es posible que descubra que ya no necesita algunas de las imágenes en sus registros.

Puede eliminar una imagen navegando al repositorio que contiene la imagen y haciendo clic en el botón Eliminar.

11. Por ejemplo, en Docker Hub, vaya al repositorio howtoforge/ubuntu. Haga clic en Configuración> Eliminar repositorio . Confirme que desea eliminar el repositorio escribiendo el nombre del repositorio. Haga clic en Eliminar .

Vuelva al panel de control y verá que el repositorio howtoforge/ubuntu ahora se elimina junto con la imagen de ubuntu.

Conclusión

¡Felicidades! Ha llegado al final del artículo. Ahora debería tener una comprensión básica de las imágenes de Docker y cómo trabajar con ellas. Si desea obtener más información sobre Docker, le sugerimos que lea la documentación oficial de Docker, donde podrá encontrar más información sobre temas como:

  • Archivos acoplables
  • Redes
  • Volúmenes
  • Servicios
  • Modo enjambre

Docker
  1. Comenzando con Zsh

  2. Comenzando con ls

  3. Primeros pasos con PostgreSQL en Linux

  4. Cómo compartir imágenes de Docker con otros

  5. Cómo modificar imágenes de Docker

Primeros pasos con cPanel

Primeros pasos con SiteApps

Tutorial de introducción a Azure Docker

Mantenga sus imágenes de Docker manejables con Docker Image Prune

Compartir imágenes de Docker en Docker Hub

Primeros pasos con Buildah para administrar contenedores de Linux