Estoy ejecutando Docker en Vagrant en OS X 10.8.4 (Mountain Lion), y cada vez que intento eliminar una imagen guardada, aparece un error:
$ docker rmi some-image-id
2013/07/15 hh:mm:ss unexpected JSON input
De acuerdo con la rmi
ayuda, la sintaxis adecuada es docker rmi IMAGE [IMAGE...]
, y no estoy seguro de qué hacer con eso.
¿Cómo puedo borrar una imagen?
$ docker version
Client version: 0.4.8
Server version: 0.4.8
Go version: go1.1
$docker info
Containers: 1
Images: 3
Curiosamente, cuando corro docker ps
, no aparecen contenedores en absoluto. La ejecución docker images
muestra cuatro (4) base
imágenes y una (1) node
imagen.
docker info
muestra la cantidad real de imágenes, puede intentar./docker images -a -q | sort | uniq | wc -l
que sea el mismo resultado (-a para todas las imágenes, -q solo para identificadores).docker ps
muestra solo contenedores activos, puede hacerdocker ps -a
para enumerar todos los contenedores-D
opción y el cliente también?docker -d -D& ; docker -D rmi <id>
. ¿También puedes intentarloCID=$(docker run -d ubuntu bash); ID=$(docker commit $CID); docker rmi $ID
?Respuestas:
Tratar
docker rmi node
. Eso debería funcionar.Ver todos los contenedores creados es tan simple como
docker ps -a
.Para eliminar todos los contenedores existentes (¡no imágenes!) Ejecute
docker rm $(docker ps -aq)
fuente
docker ps -aq | Foreach-Object { docker stop $_; docker rm $_; }
Las siguientes son algunas de las formas de eliminar imágenes / contenedores de la ventana acoplable:
Eliminar una sola imagen
Eliminar todas las imágenes
Mata los contenedores y retíralos:
Nota: Reemplace
kill
constop
un apagado eleganteEliminar todas las imágenes excepto "mi-imagen"
Use grep para eliminar todo excepto
my-image
yubuntu
O (sin awk)
docker rmi $(docker images --quiet | grep -v $(docker images --quiet ubuntu:my-image))
fuente
docker rmi $(docker images -qf "dangling=true")
docker rm $(docker kill $(docker ps -a -q))
docker rmi $(docker images --quiet | grep -v $(docker images --quiet ubuntu:my-image))
Eliminar todos los contenedores acoplables
Eliminar todas las imágenes de la ventana acoplable
fuente
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
sudo docker rmi -f $(sudo docker images | grep "<none>" | awk "{print \$3}")
y luego eliminar etiquetas de lanzamiento en vivo de 2015 (por ejemplolive-20150121223
) que podemos hacersudo docker rmi -f $(sudo docker images | grep live-2015 | awk "{print \$3}")
Para eliminar una imagen de Docker con la ID de la imagen:
Obtenga la lista de todas las imágenes
Identifique la ID de la imagen que desea eliminar, por ejemplo:
Finalmente, elimine la imagen con la ID de la imagen (solo se requieren los primeros tres dígitos)
fuente
Imagen:
Envase:
fuente
Actualización, como comentó VonC en Cómo eliminar los viejos contenedores Docker .
Con Docker 1.13 (cuarto trimestre de 2016), ahora tiene:
docker system prune
eliminará TODOS los datos no utilizados (es decir, en orden: contenedores detenidos, volúmenes sin contenedores e imágenes sin contenedores).Consulte PR 26108 y confirme 86de7c0 , que presenta algunos comandos nuevos para ayudar a facilitar la visualización de cuánto espacio ocupan los datos del demonio Docker en el disco y permite limpiar fácilmente el exceso "innecesario".
fuente
Retirar contenedores
Para eliminar un contenedor específico
Para una sola imagen
Para múltiples imágenes
Eliminar contenedores salidos
Retire todos los contenedores
Eliminar imágenes
Eliminar imágenes específicas
para una sola imagen
para múltiples imágenes
Eliminar imágenes colgantes Las imágenes
colgantes son capas que no tienen relación con ninguna imagen etiquetada, ya que las imágenes Docker están constituidas por varias imágenes.
Eliminar todas las imágenes de Docker
Eliminar volúmenes
Para enumerar volúmenes, ejecute
docker volume ls
Eliminar un volumen específico
Eliminar volúmenes colgantes
Eliminar un contenedor y sus volúmenes
fuente
CONTAINER_ID
?docker rm container_name
docker rmi image_name
fuente
Buscar ID de contenedor,
fuente
daf644660736
? ¿Cómo se relaciona eso con cualquiera de los anteriores?En primer lugar, tenemos que detener y eliminar los contenedores Docker que se adjuntan con la imagen Docker que vamos a eliminar.
Entonces para eso, primero
docker stop container-id
- Para detener el contenedor en funcionamientodocker rm container-id
- Para eliminar / eliminar el contenedorentonces,
docker rmi image-id
- Para borrar / eliminar la imagenfuente
Para las versiones 1.13 y superiores:
Comparando:
docker image rm
ydocker rmi
,El
[OPTIONS]
parece no tener diferencia.De: Presentación de Docker 1.13
fuente
Docker proporciona algún comando para eliminar
images
.Ejemplo:
Para que pueda eliminar ese filtro de imágenes como esta:
fuente
Eliminarlos todos usando
Paso 1: mata todos los contenedores
Paso 2: RM primero
Paso 3: elimine las imágenes con fuerza
Utilice el paso 1 en caso de que reciba un error que indique que no se puede eliminar debido a dependencias secundarias
fuente
Si desea limpiar automáticamente / periódicamente los contenedores salidos y eliminar imágenes y volúmenes que no están en uso por un contenedor en ejecución, puede descargar la imagen
meltwater/docker-cleanup
.Utilizo esto en producción ya que lo implementamos varias veces al día en varios servidores, y no quiero ir a todos los servidores para limpiar (eso sería una molestia).
Solo corre:
Se ejecutará cada 30 minutos (o por el tiempo que lo configure con la opción DELAY_TIME = 1800) y limpiará los contenedores e imágenes salidos.
Más detalles: https://github.com/meltwater/docker-cleanup/blob/master/README.md
fuente
Aquí hay un script de shell para eliminar una imagen etiquetada (con nombre) y sus contenedores. Guardar como docker-rmi y ejecutar usando 'docker-rmi my-image-name'
fuente
xargs -r
hacer que funcione en el caso de contenedor no coincidente.¿Por qué nadie mencionó
docker-compose
! Lo he estado usando durante una semana y no puedo sobrevivir sin él. Todo lo que necesitas es escribir un yml que solo lleve varios minutos de estudio, y luego estarás listo para comenzar. Puede arrancar imágenes, contenedores (que se necesitan en los llamados servicios) y le permite revisar los registros tal como los usa con los comandos nativos de Docker. Pruébalo:Antes de usar docker-compose, escribí mi propio script de shell, luego tuve que personalizar el script cada vez que era necesario, especialmente cuando cambiaba la arquitectura de la aplicación. Ahora ya no tengo que hacer esto, gracias a docker-compose.
fuente
docker-compose
es una herramienta de orquestación y, a menudo, poco práctica para usar en proyectos simples. En el contexto de esta pregunta, es preferible unadocker
solución independiente (que no requiera el uso dedocker-compose.yml
configuraciones a menudo complicadas ). Además, hay muchas, muchas buenas respuestas aquí ya.Para mí, lo siguiente funcionó bien:
Luego, continúe y elimine una imagen ejecutando algunos como estos:
fuente
Lista de imágenes:
Eliminar imágenes:
Eliminar por la fuerza:
fuente
En mi caso, el problema es que tengo imágenes de remolque con el mismo nombre, la solución es agregar la etiqueta después del nombre o la identificación
ex:
fuente