Errores en Docker
Aunque el manejo de errores con Docker es bastante bueno, muchas veces aparecen textos de errores que no son del todo claro, sobre cual es el verdadero error o comentarios no relacionados con el error real.
ERROR return non-zero code: 127
En este caso el archivo Dockerfile que usaremos para crear una imagen propia contiene un error de sintaxis en el comando para bash.
El error es sutil y se debe a que el comando apt-get esta mal escrito como “apt-gett”.
ERROR not found: manifest unknown
En este caso, quizas por ser demasiados optimistas y pensando que existe una imagen oficial de Debian 5 ( Lenny, released 14 February 2009, ), aunque estuviera fuera de soporte, ocurre que en ciertos entornos críticos nos encontramos con versiones muy viejas de ciertas distribuciones. (casi lo mismo que ocurre con XP).
Pero no encuentra esa version y nos da un error “extraño”.
ERROR YUM/APT not found
También podría parecer un error obvio y básico, pero ocurre mas de lo que pensamos, sobretodo en ambientes grandes y mixtos.
En las distribuciones basadas en Debian, el gestor de paquetes es apt-get/apt/dpkg mientras que para Redhat y derivadas es yum/dnf/rpm.
Al ver este error podemos pensar que nos equivocamos en la sintaxis del comando, pero en realidad estamos corriendo algo en la otra familia de sistemas operativos derivados de Redhat/Debian.
En ciertas distros (en este caso Amazon Linux v2), existe un tercer metodo de instalar paquetes, amazon-linux-extras.
ERROR Docker no se instala correctamente.
Para los muy apurados o que no desean leer la documentación o por preferencias de equipos que preparan distribuciones de Linux, el paquete DOCKER no esta definido en los repositorios oficiales ni en extras ni EPEL. Se requerirá una instalación según indique la página de Docker para nuestra distro y versión.
Ver otros posts sobre como instalar Docker en distintos S.Operativos.
Asi como parece obvio que no tiene porque venir pre-instalado en nuestra distro, en algunas SI viene, quizás por estar preparadas para entornos de servidores donde Docker es requerido en muchas de las instalaciones.
ERROR Docker esta o no esta?
Este también es un error bastante común, sobretodo durante el aprendizaje de Docker, querer quitarlo pero dice que no esta instalado. Aunque si corro el comando “docker” me dice que SI está instalado.
Esto suele pasar porque el paquete instalado tiene otro nombre, “docker-ce” en lugar de “docker”. Algo que con el comando “dpkg -l | grep doc” o “rpm -qa | grep ock” podemos descubrir. |
ERROR - Como instalar Docker en Amazon Linux V2.
Aunque deberia ser igual que otros paquetes, Amazon pense que era mejor hacer un “paquete” para instalar Docker, tal como lo hizo con otros servicios.
Al final, si todo fue correcto, tendremos varios paquetes instalados de esta manera.
Estos son los paquetes de EXTRAS que existen y cuales estan activados.
Aunque pueda tener sentido el empaquetado de Amazon,similar a los paquetes SNAP, para ciertos programas no le veo el sentido porque no existe un “remove” para el mismo paquete (cosa que en SNAP SI existe).
Sin embargo, tiene opciones para indicar que version queremos usar, lo que SI es una buena opción.
ERROR - Quitar paquetes de Amazon Linux
Aunque deberia existir un remove packages, no lo encontré y la manera simple de des-instalar paquetes en A.L. V2 es la típida de “yum remove xxxx”.
Debemos haber guardado el nombre de todos los paquetes que instalamos anteriormente para luego poder quitarlos.
Lo verifiqué varias veces y no hay un remove?
ERROR - Uso de SNAP y APT como instaladores.
Un problema bastante común es la mezcla de aplicaciones entre las instaladas con SNAP y las instaladas con APT.
En este caso estamos instalando docker con SNAP, pero ya tenemos una version de Docker previamente instalada con APT.
Y para correr esa versión, podemos usar :
En este caso mostramos que hemos instalado la version 19.03.13 con Snap, pero teniamos la version 20.10.7 previamente instalada con apt.
Personalmente preferimos usar apt, asi que removemos la version Docker con SNAP y mantenemos la versión de APT.
Finalmente nos quedamos con la versión instalada por APT, que además es mas nueva.
ERROR - Demonio de Docker no esta corriendo.
Luego de varias actualizaciones, cambios, pruebas, borrado de carpetas, a veces puede ocurrir que Docker no arranque automáticamente. Y aunque el error es bastante obvio, es bueno recordarlo, Docker se basa en un servicio/demonio llamado Dockerd y con el que interactuamos con un cliente llamado Docker.
Pensamos que puede arrancar fácilmente pero sigue sin funcionar.
ERROR - No logro arrancar Docker.
También es un error recurrente y aunque puede haber varios motivos, una manera de resolverlo es la siguiente:
Primero borrar la carpeta /var/run/docker, esto nos borrará también imágenes, contenedores, volúmenes y redes, pero limpia el espacio usado y prepara Docker para que con el próximo arranque genere las carpetas nuevamente.
Luego, arrancar el servicio y verificar que funcione correctamente.
ERROR - Servicio parado pero cliente instalado.
Suele ser un error de principiantes que no conocen en detalle Docker, pero el servicio DockerD puede estar parado y sin embargo el cliente Docker esta instalado y funciona. Todo comando que intentemos enviarle al servicio desde el cliente fallará.
ERROR - sin espacio libre
Hemos visto servidores en producción que tienen problemas con Docker y descubrimos que el espacio de cierta carpeta ha llegado el 100% de esa partición/Disco.
De una manera standard, Docker utiliza la carpeta /var/lib/docker para guardar casi todos sus objetos, las imágenes están en images y en overlay2 (recordemos que docker trabaja en modo capas de cebolla).
Podemos ver que imágenes tenemos y cuanto mide cada una, para definir cual eliminar.
ERROR - No encuentro las aplicaciones.
Este es un error que nos puede sorprender al principio, pero que no comprenderemos que pasa exactamente al principio.
Quiero ejecutar la aplicación HTOP y me dice que no existe, cuando estoy totalmente seguro que la tenía instalada… al mirar en el prompt vemos root@xxxxxxx, esa serie de numeros y letras representa el ID del contenedor en el que estamos conectados.
Puede que Htop SI esté instalado en nuestro equipo real/virtual o en otro contenedor, pero que no haya sido instalado en el contenedor 16d0 en el que estoy parado ahora mismo.
Aprovechamos para recordar que con utilizar unos pocos chars del nombre es suficiente para referenciarlo.
ERROR - No puedo borrar ciertas imágenes
Recordando la filosofía de Docker, las imágenes se usan para construir contenedores, y aunque parezca algo independiente, están vinculados de por vida. No se puede borrar una imágen si hay al menos un contenedor que la usa.
Existe el comando –force que quitará imágenes y contenedores que las usen, pero recomendamos que antes de usarlo miremos si debemos borrar esas imágenes.
En este caso, dos imágenes (debian:10 y debian:latest), comparten el mismo objeto. ( 7a4951775d15 ), al intentar borrar cualquiera de las dos acabaremos quitando esa y la otra imágen también.
ERROR - quitamos imágenes, contenedores y volúmenes que no necesitábamos.
Hemos quitado cosas de mas y ahora al querer correr un contenedor nos damos cuenta que la imágen en la que estaba basado ya no existe.
No es posible ahora descargar la imágen de nuevo para que corra el contenedor.
Además quitamos contenedores y volúmenes viejos.
Las tres redes fueron creadas en la instalación de Docker y recomendamos dejarlas.
Llegamos casi al punto de inicio de Docker con 1.1 MB de espacio usado.