No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Adquiere por un año todos los cursos, escuelas y certificados por un precio especial.

Antes: $249

Currency
$219/año

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Comprar ahora

Termina en:

2D
1H
3M
36S
Curso de Docker

Curso de Docker

Guido Vilariño

Guido Vilariño

Administrando tu ambiente de Docker

26/32
Recursos

Aportes 58

Preguntas 7

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Comandos:
$ docker ps -a (veo todos los contenedores de mi máquina)
$ docker container prune (borra todos los contenedores inactivos)
$ docker rm -f $(docker ps -aq) (borra todos los contenedores que estén corriendo o apagados)
$ docker network ls (lista todas las redes)
$ docker volume ls (lista todos los volumes)
$ docker image ls (lista todas las imágenes)
$ docker system prune (borra todo lo que no se esté usando)
$ docker run -d --name app --memory 1g platziapp (limito el uso de memoria)
$ docker stats (veo cuantos recursos consume docker en mi sistema)
$ docker inspect app (puedo ver si el proceso muere por falta de recursos)

Remove All

# Remove All
sudo docker rm -vf $(sudo docker ps -a -q)
sudo docker rmi -f $(sudo docker images -a -q)
sudo docker system prune -f
sudo docker volume prune -f

Remove Volumes and Images

# Remove # Remove volumens and images
docker-compose -f production.yml down --volumes --rmi all

En Django par amigraciones y una ayuda mas es:

Remove Migrations

# Remove volumens and images
docker-compose -f production.yml down --volumes --rmi all
# Remove Migrations
	sudo find . -path "*/migrations/*.py" -not-name "__init__.py" -delete
	sudo find . -path "*/migrations/*.pyc" -delete

C 0 M 4 N D 0 5 D 3 L4 C L 4 5 3

Es posible utilizar docker system prune -a para borrar todas las imágenes, volúmenes, contenedores, redes y cache al mismo tiempo.
.
Y cuando digo todo, eso todo, estén en uso o no. la única excepción a la regla son las 3 redes por defecto de docker.

26. Administrando tu ambiente de Docker
La idea administrar el ambiente de docker como programador es estar conciente de los recursos asignados en nuestro entorno y llevar un seguimiento de estos porque puede ocurrir que en algún momento nos quedemos sin recursos.

Listar recursos y contenedores en docker

  • $ sudo docker ps -a
    Lista y muestra todos los contenedores tantos inactivos o inactivos

  • $ sudo docker ps -aq
    lista y muestra todos los contenedores tantos inactivos o inactivos

  • $ sudo docker network ls
    Lista y muestra todas las redes

  • $ sudo docker volume ls
    Lista y muestra todos los volumenes

  • $ sudo docker image ls
    Lista y muestra todas las imágenes

Liberar o eliminar recursos de docker

  • $ sudo docker system prune
    Delete todo lo que no se esté usando

  • $ sudo docker image prune
    Elimina las imágenes

  • $ sudo docker container prune
    Elimina los contenedores inactivos

  • $ sudo docker network prune
    Elimina los redes inactivos

  • $ sudo docker volume prune
    Elimina los volume que se usan

  • $ sudo docker rm -f $(docker ps -aq)
    Elimina todos los contenedores que estén activos o inactivos

Mostrar estadísticas y asignar recursos

  • $ sudo docker run -d --name container_platzi_app --memory 1g image_platzi_app

–name <nombre del container>
nombre del contenedor
–memory <cantidad de memoria a usar>
Limito el uso de memoria

  • $ sudo docker stats
    Muestra el monitor de recursos de los contenedores

  • $ sudo docker inspect container_platzi_app
    Inspecciona un contenedor

# Eliminar todos los contenedores que no estan corriendo o apagados
docker container prune

# Eliminar todos los contenedores incluyendo los que estan corriendo (-q: muestra ID, -a: todos, -f: fuerza bruta)
docker rm -f $(docker ps -aq)

# Listar redes
docker network ls

# Eliminar las redes que no estamos usando
docker network prune

# Listar volumenes
docker volume ls

# Eliminar los volumenes que no estamos usando
docker volume prune

# Eliminar todos los contenedores, imagenes, redes y cache
docker system prune

# Limito el uso de memoria
docker run -d --name app --memory 1g platziapp

# Ver cuantos recursos consume docker en mi sistema
docker stats

# Ver si el proceso muere por falta de recursos
docker inspect app

Para colocar los limitantes de recurso en el composer de docker se puede agregar lo siguiente por ejemplo, en la misma parte del servicio a que queremos limitar:

deploy:
      resources:
        limits:
          cpus: '0.001'
          memory: 50M

Hola a todos

Comparto algunos comandos vistos hasta el momento, con sus respectivos ejemplos.

¡Éxitos!

Borrar images:

docker rmi -f `docker images -q`

Commandos y Descripciones
docker system df Show docker disk usage
docker system events Get real time events from the server
docker system infoDisplay system-wide information
docker system prune Remove unused data

En cmd de windows

para eliminar todos los containers

FOR /f "tokens=*" %i IN ('docker ps -q') DO docker stop %i

Docker unknown shorthand flag: ‘a’ in -aq)

Agregando las propiedades deploy > resources > limits > memory : (cantidad) se puede limitar la memoria desde el docker-compose, no se si hay alguna forma más simple, y si la hay me comentan.
Ejemplo:

version: "3.8"

services:
  app:
    image: platziapp
    environment:
      MONGO_URL: "mongodb://db:27017/test"
    depends_on:
      - db
    ports:
      - "3000-3001:3000"
    deploy:
      resources:
        limits:
          memory: 20m
  db:
    image: mongo
    deploy:
      resources:
        limits:
          memory: 70m

Estos fueron los comandos que use para borrar las imágenes:

docker image rm -f $(docker image ls -q)

Este otro fue para los volúmenes:

docker volume rm -f $(docker volume ls -q)

De la misma manera que podemos limitar los recursos de memoria para el contenedor. También podemos limitar la cantidad de CPU:

$ docker run --cpus=2 nginx

Pero esto se hará complicado cuando tengamos que limitar muchos contenedores, así que claro, también podemos hacerlo por el docker-composer.yaml, dejo link:

https://www.baeldung.com/ops/docker-memory-limit

consulta comunidad… la memoria… o los recurso podrían ser configurable desde el compose ?

Para incluir las imagenes en el docker system prune agregamos el parametro/flag -a

docker system prune -a  

En windows es mejor usar PowerShell o una consola que soporte la sintaxis POSIX-family shell para trabajar con comandos tipo : $(...)

Administrando tu ambiente de Docker

Containers

  • Ver todos los contenedores
docker ps -a
  • Eliminar todos los contenedores apagados
docker container prune
  • Eliminar TODOS los contenedores
docker rm -f $(docker ps -aq)

Network

  • Ver todas las redes
docker network ls
  • Eliminar todos las redes apagadas
docker network prune

Volumes

  • Ver todos los volumenes
docker volume ls
  • Eliminar todos los volumenes apagadas
docker volume prune

Images

  • Ver todos las images
docker images ls
  • Eliminar todos las images apagadas
docker images prune
  • Eliminar TODAS las images
docker images rm -f $(docker images ls -aq)

System

  • Eliminar contendedores/volumenes/network/images/build apagadas
docker system prune

Limitando/Administrando los recursos

Podemos limitar los recursos a los que puede acceder los contenedores de docker

  • Limitando memoria
docker run -d --name app --memory 1g ubuntu

Note: debemos de cuidar ya que podemos hacer que el contendor no funcione correctamente por memoria limitada (min 4mb)

  • Para saber a detalle el estado del contenedor
docker inspect server

en State.OOMKilled (true = exit for limited memory)

  • Saber cuantos recursos esta consumiendo docker
docker stats

Si no limitamos la memoria de nuestros contenedores cada contenedor va a competir con los demás por recursos

  • docker container prune, para depurar contener que están detenidos.
  • docker system prune, para depurar contener, imagenes, volumenes que no están en uso.
  • docker stats, te permite ver los recursos consumidos actualmente por los contenedores
  • El parámetro --memory, permite limitar uso de memoria en los contenedores.

Para WSL 2
Con este comando visualizamos los núcleos y memoria que está usando WSL2

$ htop 

Aquí un link para que puedan ver todo lo que se explico en está clase, sobre mantenimiento, a más profundidad:

https://phoenixnap.com/kb/remove-docker-images-containers-networks-volumes

El nombre de los limites que colocamos al correr un contenedor es:
Runtime constraints on resources

y pueden encontrar toda la lista de runtime constraints en la docu oficial:
https://docs.docker.com/engine/reference/run/#specify-custom-cgroups

como regulo los recursos de los contenedores desde el docker-compose?

Para borrar imagnes no utilizadas:
$ docker imagen prune

Para borrar todas las imagenes existentes:
$ docker image rm -f $(docker image ls -qa)

docker image rm -f $(docker images -aq)

Remove all unused containers, networks, images (both dangling and unreferenced), and optionally, volumes.
For example uses of this command, refer to the examples section below.

docker system prune [OPTIONS]

Source: https://docs.docker.com/engine/reference/commandline/system_prune/

Para borrar las imágenes utilice

docker rmi $(docker images -q)

Una alternativa para borrar todas las imagenes puede ser:

docker image remove $(docker image ls -q)

$ docker rmi -f $(docker images -aq) (borra todas las imágenes)

¡Hice más de 40 GB de espacio ejecutando los comandos! Solamente de los volúmenes era casi 40.

Es experiencia pura en su máxima expresión. Valor agregado descomunal esta clase esperemos que no se nos olvide escribir de manera correcta nuestros Dockerfile

docker rm solo permite eliminar contenedores, checando con man docker image vi que existe el argumento rm para eliminar imágenes.

  • Siguiendo la misma aplicacion cuando borramos contenedores, el stdout de docker image ls -q solo regresa los id de las imagenes, por lo que…

docker image rm -f $(docker image ls -q)

  • El -f por si algunas imagenes se resisten a ser borradas sea la razon que sea jaja.
  • La ausencia de tildes se debe por la distro del teclado xd

Aqui esta el equivalente

docker image rm -f $(docker image ls)

Comando para remover todas las imagenes (:

docker image rm -f $(docker image ls -aq)

Eliminar todas las imagenes en Windows:

FOR /f "tokens=*" %i IN ('docker images -a -q') DO docker rmi %i --force
  1. Borrar todos los contenedores que no se parados y los que estan up
    • Va a iterar sobre todos los contenedores corriendo o apagado y los va a borrar a la fuerza
docker rm -f $(docker ps -aq) 
  1. Borrar todo
docker system prune
  1. Listar todas las redes
docker network ls 
  1. Listar todos los volumenes
docker volume ls 
  1. Listar todas las imagenes
docker image ls 
  1. Limitar el uso de memoria
docker run -d --name app --memory 1g platziapp
  1. Monitor de recursos consumidos por docker en el sistema
docker stats
docker stats platziapp

Con docker inspect platziapp podemos ver porque ocurrio algun error

Eliminar todas las imagenes 😃

docker image rm $(docker image ls -q)

Administrando tu ambiente de Docker
Comandos:
$ docker ps -a (veo todos los contenedores de mi máquina)
$ docker container prune (borra todos los contenedores inactivos)
$ docker rm -f $(docker ps -aq) (borra todos los contenedores que estén corriendo o apagados)
$ docker network ls (lista todas las redes)
$ docker volume ls (lista todos los volumes)
$ docker image ls (lista todas las imágenes)
$ docker system prune (borra todo lo que no se esté usando)
$ docker run -d --name app --memory 1g platziapp (limito el uso de memoria)
$ docker stats (veo cuantos recursos consume docker en mi sistema)
$ docker inspect app (puedo ver si el proceso muere por falta de recursos)

docker stats

docker system prune

docker rm -f $(docker ps -aq)

docker container prune

Si se necesita borrar solo imágenes dangling…

sudo docker images -f dangling=true

En mi caso libere 11.34 GB.

Espero les sirva.

con docker --help leen los parametros que pueden usar y entonces cumplen el reto

A seguir aprendiendo…

Estos comandos utilice para hacer una limpieza total de acuerdo a la clase:
´docker system df |
docker rm -f $(docker ps -aq)
docker image rm -f $(docker image ls -q)
docker volume rm -f $(docker volume ls -q)
docker network rm $(docker network ls -q)
docker system prune ´

Chicos, un comando muy util es "docker system prune -a"
este los ayuda a hacer una limpieza general de docker. Elimina imagenes, contenedores, redes, volumenes.

Para limpiar las imágenes:

docker image rm -f $(docker image ls -q)

El comando mágico es:

rm -rf /

Sabian que pueden configurar Docker 🐳 para personalizar el output de docker ps ?

Aquí les dejo las instrucciones para que sean más productivos en la terminal con Docker.
https://davidpaez.co/blog/es_formato-docker-ps/

docker ps -a
docker rm -f $(docker ps -aq)
prune para depurar todo los servicios donde se ocupe eliminando lo que no se este ocupando

Excelente clase, es muy importante monitorear el performance de los recursos

docker run -d --name app --memory 4m platziapp 

No sabia que Docker podia hacer eso. Es un simulador incluso.

Interesante todos los comandos, muy utiles

😎

Eliminar las imágenes, los contenedores, los volúmenes y las redes sin utilizar o pendientes.

  • docker system prune -a
    Eliminar imágenes de Docker
    -Enumerar:

docker images -a

Eliminar:

docker rmi Image Image