• Inicio
  • Novedades
  • Academia SAP
  • FAQ
  • Blog
  • Contacto
S4PCADEMY_Logo
Twitter Linkedin Instagram
S4PCADEMY_Logo
Twitter Linkedin Instagram
FORMACIÓN SAP

Comandos de Docker para fines administrativos

By s4pcademy 


Esta publicación de blog proporciona una descripción general inicial de los comandos de Docker que puede utilizar para la administración de su sistema Docker.

Dichas tareas de administración incluyen enumerar y eliminar imágenes, contenedores y volúmenes.

Determinación de los requisitos de espacio de imágenes y contenedores

¿Cuánto espacio se necesita realmente para las imágenes o para la capa contenedora (es decir, para los datos de un contenedor que se desvía de la imagen original)? Esta pregunta se responde con los comandos Docker Images y Docker ps -a -s.

Docker Images devuelve una lista de todas las imágenes descargadas o personalizadas, incluida la información sobre el tamaño:

docker images

REPOSITORY            TAG      ...     CREATED SIZE      SIZE

wordpress             latest           17 hours ago      550MB

mariadb               latest           7 days ago        405MB

phpmyadmin/phpmyadmin latest           2 months ago      477MB

...

De forma predeterminada, Docker ps enumera solo los contenedores en ejecución. La opción -a extiende la salida a todos los contenedores que alguna vez se hayan configurado. -s agrega la columna TAMAÑO. Indica cuánto espacio ocupan esos archivos que han sido modificados en comparación con la imagen. Siempre que la mayoría de los datos mutables se almacenen en un volumen, el espacio adicional necesario suele ser mínimo. Sin embargo, cuando hay cambios, el espacio real requerido en el sistema de archivos local suele ser notablemente mayor de lo que sugiere Docker PS. Esto se debe a la sobrecarga del sistema de archivos cuando se almacenan muchos archivos pequeños.

La información entre paréntesis (virtual) se refiere al tamaño total del contenedor, incluidas las imágenes de solo lectura. Estos datos son virtuales en el sentido de que varios contenedores pueden compartir imágenes comunes, por así decirlo.

docker ps -a -s

CONTAINER ID       IMAGE           ...       SIZE

2bf9e954b4b7       wordpress                 20.1MB (virtual 571MB)

3af937080228       phpmyadmin/...            70B (virtual 477MB)

ac98aca37f7a       mariadb                   2B (virtual 405MB)

...

Eliminar contenedores e imágenes

docker rm o docker rm elimina el contenedor especificado. Si es necesario, puede determinar los ID y nombres de los contenedores con docker ps -a.

docker rm ac98aca37f7a

Precaución: docker rm tiene muchas similitudes con el comando rm clásico en Linux: elimina sin confirmación y sin la opción de deshacer la operación.

El siguiente comando primero usa ps para generar una lista de todos los ID de contenedores derivados de la imagen, ubuntu. Luego, esta lista se pasa a Docker rm para eliminar todos los contenedores. Entonces, si ha experimentado con Docker Run Ubuntu por un tiempo, puede eliminar todos los contenedores creados en esta ocasión. Tenga en cuenta que este comando solo funciona en macOS y Linux, no en Windows. La concatenación de dos comandos presentada aquí supone que se utiliza un shell como bash o zsh, como es el caso de forma predeterminada en Linux o macOS. En Windows, el comando también funciona, siempre que utilice PowerShell.

docker rm $(docker ps -a -q -f ancestor=ubuntu)

¡El siguiente comando es aún más radical ya que elimina todos los contenedores existentes!

docker rm $(docker ps -aq)

docker rmi imagename elimina la imagen especificada. Esto sólo es posible si no hay contenedores derivados de la imagen. Los siguientes comandos primero eliminan todos los contenedores de helloworld y luego la imagen de hello-world:

docker rm $(docker ps -a -q -f ancestor=hello-world)

docker rmi hello-world

Tenga en cuenta que Docker rmi solo se ejecuta localmente. Si has subido tu propia imagen a Estibador Hub, la imagen permanecerá allí. Puede eliminarlo en la GUI web de https://hub.docker.comsi necesario.

Gestión de volúmenes

Los volúmenes se almacenan por separado de los contenedores y las imágenes en su propio directorio, por ejemplo, en /var/lib/docker/volumenes en Linux. Cuando elimina contenedores, Docker generalmente no toca ningún volumen. Sin embargo, puede determinar una lista con los nombres o ID de todos los volúmenes para los cuales el contenedor asociado ya no existe, de la siguiente manera:

docker volume ls -q -f dangling=true

   4df85efbf1240b7429f7bf554e2ead52b90a1934875d57773c1c80c405d64a

   6eec952744a21b55c71b8e6dc28da822bf3c8147ed54351dcb88c30094eb1b

   ...

El tamaño de los volúmenes se puede determinar pasando el resultado anterior a du. Sin embargo, esto sólo funciona de esta manera en un host Linux. En Windows y macOS, los archivos Docker se almacenan en un sistema de archivos separado dentro de una máquina virtual, al que no se puede acceder directamente desde el exterior.

du -h --max 0 \

   /var/lib/docker/volumes/$(docker volume ls -q -f dangling=true)

Puede eliminar todos los volúmenes huérfanos con el siguiente comando si es necesario. La consulta que aparecería se puede suprimir usando -f.

docker volume prune

   WARNING! This will remove all volumes not used by at least

   one container. Are you sure you want to continue? [y/N] y

Visión general

Docker system df proporciona una descripción general compacta de los requisitos de espacio de todas las imágenes, contenedores, volúmenes y la caché de compilación:

docker system df

   TYPE           TOTAL   ACTIVE   SIZE      RECLAIMABLE

   Images         18      11       10.72GB   1.854GB (17%)

   Containers     33      4        496MB     495.9MB (99%)

   Local Volumes  2       1        169MB     119.8MB (70%)

   Build Cache    0       0        0B        0B

Si también pasa la opción -v, el comando enumerará todas las imágenes, contenedores, volúmenes, etc.

Liberar espacio no utilizado

En lugar de buscar imágenes, contenedores y volúmenes y eliminarlos uno por uno, puede utilizar la poda del sistema Docker para ayudarle con sus tareas de limpieza. Este comando elimina todos los contenedores que no se están ejecutando actualmente y todas las imágenes que no son necesarias para otras imágenes (Imágenes de colgando).

La limpieza a gran escala se vuelve aún más intensiva con opciones adicionales:

  • -a o –all también elimina imágenes que no utilizan los contenedores.
  • –volumes también elimina volúmenes que no están asociados con ningún contenedor. (Precaución: ¡los datos de volúmenes no asociados se perderán y no podrán reutilizarse en otro contenedor!)

docker system prune -a --volumes

WARNING! This will remove:

   - all stopped containers

   - all networks not used by at least one container

   - all volumes not used by at least one container

   - all images without at least one container associated to them

   - all build cache

Are you sure you want to continue? [y/N]

Nota del editor: esta publicación ha sido adaptada de una sección del libro. Docker: Guía práctica para desarrolladores y equipos DevOps por Bernd Öggl y Michael Kofler.




Identidad sólida: integración de SAP Cloud Identity Services con SAP Concur
Previo
Acreditación de soporte: cómo aprovechar al máximo el soporte de SAP.
Siguiente

Madrid

Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010

México

Paseo de la Reforma 26
Colonia Juárez,  Cuauhtémoc
Ciudad de México 06600

Costa Rica

Real Cariari
Autopista General Cañas, 
San José, SJ 40104

Perú

Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073

Twitter Linkedin Instagram
Copyright 2022 | All Right Reserved.

x