Consejos rápidos, Internet
     

Proxy de Docker autohospedado

Como muchos en los Estados Unidos, tengo un Internet residencial extraordinariamente lento. De hecho, hasta hace poco, mi Internet ni siquiera calificaba como “banda ancha” según la definición de la FCC. Gracias al cambio a la nueva internet residencial de T-Mobile, apenas supero el límite mínimo de 25 Mbps de banda ancha.

picture of rural road
¿Internet lento?

Si eres como yo, entonces sabes de lo que estoy hablando cuando digo que he tomado grandes medidas para estirar nuestro ancho de banda de Internet lo más que puedo. La mayor parte de eso es un tema para otro día, aunque puedo resumirlo diciendo que OpenWRT  es un producto maravilloso, de lo que me gustaría hablar hoy es de Docker.

Docker ha sido un increíble aumento de la productividad desde que comencé a usarlo en 2014. La capacidad de definir severamente el entorno operativo (y por extensión las dependencias) de una aplicación mejora su resiliencia. La mayoría de los días de “funciona en mi caja” han desaparecido. Con Docker, tu “caja” es la misma que el rendimiento, ¡siempre! Debido a esto, veo los contenedores de Docker como desechables: si la aplicación cambia, reconstruye el contenedor.

Toda esta reconstrucción puede dejar extra “cruft” a tu alrededor consumiendo un valioso espacio en el disco duro. A pesar de que los contenedores son desechables, las herramientas como Docker Compose retienen volúmenes entre ejecución. Ambos crean un problema que puede solucionarse fácilmente con varios comandos de depuración de Docker.

No sé ustedes, pero a veces soy bastante perezoso, y recordar toda la variedad de comandos de Docker, el orden correcto para ejecutarlos y, de hecho, hacer eso, es una gran cantidad de esfuerzo en vano. Ciertamente tengo tareas más importantes que hacer y cosas que recordar. Entonces, como cualquier buen desarrollador perezoso, presioné ese maravilloso botón “Clean/Purge data”. Y, como por arte de magia, mi entorno Docker vuelve a estar limpio y listo para volver al trabajo.

El botón mágico: suponiendo que tengas buenas velocidades de Internet

Excepto… La próxima vez que Docker reconstruya, tendrá que extraer imágenes del concentrador de Docker.

Normalmente esto no sería un problema. Normalmente esto no sería un problema. Y, por “normalmente”, quiero decir “si tu Internet no apesta, esto no es un problema”. La mayoría de las imágenes de Docker son relativamente pequeñas, con un peso de solo unos pocos cientos de megabytes (y en algunos casos, mucho más pequeñas). Sin embargo, cuando el Internet tiene poca energía y una familia de 6 personas que están atrapadas en casa debido al COVID-19 lo utilizan en exceso, esto puede significar un serio tiempo de inactividad en la utilidad. Aquí es donde me volví creativo y alojé mi propio proxy Docker.

La configuración es bastante sencilla. En mi servidor doméstico (tienes un servidor doméstico, ¿verdad?), Extraigo y configuro el registro de Docker:

La configuración aquí es bastante mínima. Lo único que necesitas cambiar (en lugar de simplemente copiar y pegar lo anterior) es el volumen montado. La ruta en mi máquina es “/mnt/simple-storage” – cámbialo por algo en tu servidor doméstico. Esta será la ruta que utilizará el registro para almacenar en caché los contenedores que extraigas.

Ahora, en tu estación de trabajo, edita la configuración de tu motor Docker. En mi Mac, se accede haciendo clic en “Preferencia…” y luego en “Docker Engine” (Motor Docker) desde el icono de la ballena Docker en la barra de menú. En la configuración JSON, agrega lo siguiente:

Por supuesto, necesitarás editar la URL para que se dirija a tu servidor doméstico. En mi caso saturn.lan.whitehorn.us es el nombre DNS de mi servidor doméstico, el tuyo probablemente sea una dirección IP. La configuración final debería verse así:

Con eso termino, has finalizado.

La próxima vez que extraigas una imagen de Docker de tu estación de trabajo, llevará la misma cantidad de tiempo que de costumbre. Esto se debe a que tus estaciones de trabajo se comunicarán con tu servidor doméstico para obtener esta imagen, tu servidor doméstico no la tendrá y, por lo tanto, tendrá que buscarla en tu ISP (presumiblemente pésimo) antes de almacenar el resultado en la caché. Sin embargo, la próxima vez que extraigas la misma imagen, las cosas serán diferentes.

Cuando tu estación de trabajo pregunte, si tu servidor doméstico ya lo ha almacenado en caché, responderá tan rápido como tu LAN doméstica pueda responder, lo cual es bastante rápido.

About Jason

Jason es un experimentado emprendedor y desarrollador de software experto en liderazgo, desarrollo móvil, sincronización de datos y arquitectura SaaS. Obtuvo su Licenciatura en Ciencias de la Computación de la Universidad Estatal de Arkansas.
View all posts by Jason →

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *