| Author: Eduardo Enriquez

Docker II: algunos tips m谩s para ir perdi茅ndole el miedo a las im谩genes y los contenedores.

Docker

1. Borrar containers en desuso

Para borrar algunos de los containers que no usamos mas necesitamos el id del container, pero esto es medio tedioso. O al menos yo me canso de copiar y pegar esos id, as铆 que googleando uno encuentra ese comando m谩gico para borrar todos los que estan con estado "exited".

$ docker rm $(docker ps -a -q -f status=exited)

Para los que no solo quieren robarse el comando, les cuento que el paramentro -q聽 permite que solo se impriman los ids de los containers, por otro lado el paramentro聽-f聽permite filtrar los resultados seg煤n la condici贸n deseada, en este caso, los de estado exited.

Este commando igual es muy zarpado porque borra todos lo containers que estan con ese estado, que basicamente seria todos los que no est谩n corriendo, as铆 que yo tendr铆a cuidado antes de ejecutarlo.

2. Borrado autom谩tico de containers

Lo 煤litmo y quiz谩s lo mas importante聽 cuando corramos containers por 煤nica vez conviene siempre agregarle la flag聽--rm聽 con聽docker run para que se borre automaticamente el container despu茅s聽de su utilizaci贸n.

$ docker run --rm -ti python:3.7
Python 3.7.0 (default, Jul 17 2018, 11:04:33)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print("hola mundo!")
hola mundo!

$ docker ps
CONTAINER ID   IMAGE      COMMAND     CREATED     STATUS     PORTS        NAMES

3. Modo separado o desatachado

Si adem谩s de correr docker run, le agregamos la flag聽-d聽esto har谩 que la ejecuci贸n de ese container no este unido, pegado, a nuestra terminal.

$ docker run -d -ti busybox sh
a12d531a9aaa504800436dfa0a18b2700a08d8dbc3335e887ed6a80ff3d52f67

Ahi corremos una imagen de busybox corriendo en un container separado de la terminal que lo inicializo. Y para que no se pierda nos devuelve un hash que nos va a permitir conectarnos a ese container. Para eso con el hash hacemos directamente docker attach:

$ docker attach a12d531a9aaa504800436dfa0a18b2700a08d8dbc3335e887ed6a80ff3d52f67
/ # ls
bin   dev   etc   home  proc  root  sys   tmp   usr   var
/ #

Un script que utilizo a menudo para liberar espacio usado por docker es:

#!/bin/bash

# remove exited containers:
docker ps --filter status=dead --filter status=exited -aq | xargs -r docker rm -v

# remove unused images:
docker images --no-trunc | grep '<none>' | awk '{ print $3 }' | xargs -r docker rmi

# remove unused volumes:
docker volume ls -qf dangling=true | xargs -r docker volume rm

Para que funcione en Osx / Mac en vez de usar xargs paso todo con $() ejemplo:

# OSX

# remove exited containers:
docker rm -v $(docker ps --filter status=dead --filter status=exited -aq)

# remove unused images:
docker rmi $(docker images --no-trunc | grep '<none>' | awk '{ print $3 }')

# remove unused volumes:
docker volume rm $(docker volume ls -qf dangling=true)

Para seguir leyendo:聽Docker: una peque帽a introducci贸n y algunos comandos 煤tiles para tener a mano.

Related Posts