Hacía tiempo que esperaba ansiosamente la nueva versión de docker. La raíz de tanta expectación son las mejoras que la versión candidata anunciaba, especialmente el nuevo modelo de build. Se ha modificado los Dockerfile para que puedan generar varias imágenes en un solo fichero, algunas de ellas partiendo de otras.
Cuando construimos imágenes docker, muchas veces no somos conscientes del poder de la caché integrada. Si reordenamos algunas instrucciones y aplicamos algún truco, podemos evitarnos el hecho de reconstruir muchas de esas capas, llegando a reducir el tiempo de rebuild a prácticamente cero, siempre y cuando no hayan grandes cambios.
El otro día estaba haciendo un script de python que debía ejecutarse en un contenedor docker. A pesar de la cantidad de verbose que le puse, no era capaz de ver ningún texto cuando miraba los logs. Tras mucha búsqueda, finalmente encontré el culpable en la variable de entorno PYTHONUNBUFFERED.
El otro día me topé con un desarrollador que quiere desplegar sus contenedores Docker en el servidor de integración, pero no conoce la sintaxis del comando docker y prefiere una interfaz gráfica. Eso me llevó a investigar, buscando una opción bonita, funcional y ligera; al final, me topé con Portainer.
En mi trabajo, los problemas llegan sin previo aviso. De repente, alguien te pone en aviso que su aplicación web está caída y es inaccesible. Se trata de un problema de resolución DNS, pero queremos probarlo para estar seguros de que solo es ese el problema y no es general.
Muchas veces necesitamos herramientas para nuestro trabajo y no las usamos desde la misma máquina; otras veces no queremos instalar muchos paquetes en nuestra máquina. Tener una máquina virtual suele ser overkill para ejecutar algunos binarios. En este caso podemos tener nuestras imágenes docker listas para ser usadas según convenga.
Algunas veces me he encontrado con usuarios de alguno de mis servidores SFTP que se quejan porque “les desaparecen archivos”. Si estamos seguros que esas desapariciones no tienen nada que ver con nosotros, lo mas probable es que lo hayan hecho los mismos usuarios, sea manualmente o de forma automática.
Buscar en los logs es fácil cuando tenemos una máquina de cada tipo, pero es una actividad muy poco gratificante cuando tenemos un número grande o variable de cada tipo. La mejor manera de tenerlos controlados es hacer que envíen sus logs a un almacén central, para su fácil consulta.
Algunas veces tenemos que montar servidores web que responden con distinto contenido dependiendo del dominio. En estas ocasiones, es posible usar un servidor DNS local o incluso resolviendo los dominios mediante el fichero /etc/hosts. Sin embargo, hay una forma fácil, elegante y que no requiere modificar configuraciones del sistema.
Tras revisar un bug de cierto proceso en background de una aplicación en mi trabajo, vimos que saltaban dos ejecuciones simultáneas y los dos procesos interferían entre ellos. Implementar una exclusión mutua en el proceso era costoso, así que opté por hacerlo con un comando linux, que descubrí por internet.