Cómo solucionar el bajo rendimiento de los archivos compartidos en Docker
13 de febrero de 2020Docker está diseñado principalmente para Linux. Gracias a su extensibilidad y apertura, se ha abierto camino hasta Windows y Mac OS X. En estos sistemas operativos, sin embargo, Docker tiene un problema de velocidad cuando se trata de acceso a archivos. ¿Cómo solucionarlo? ¿Cómo mejorar el rendimiento?
Docker es una herramienta para agilizar el trabajo y resolver algunos problemas.
Pero también introduce nuevos problemas.
Sin embargo, muchos de los problemas vienen dados por el desconocimiento de la herramienta, el mal uso de la misma y el desconocimiento del mundo Linux.
Otras plataformas
Dejaré de lado el problema de no saber configurar un servidor Linux y el (in)correcto funcionamiento y seguridad asociados.
Sin conocimientos de Linux, nadie debería desplegar Docker en un entorno de producción.
El problema más común que tienen los usuarios de Windows y macOS con Docker es el rendimiento de la compartición de archivos entre el host y el contenedor.
Docker está desarrollado principalmente para Linux, por lo que Windows o Mas OS X no es la plataforma adecuada para las personas que utilizan Docker.
Algunos usuarios han optado por la solución simple y óptima de cambiar de Windows o macOS a GNU/Linux. Al fin y al cabo, Linux es el estándar para los desarrolladores porque es la solución ideal para ellos.
Sin embargo, el usuario no siempre está dispuesto a cambiar. ¿Cómo abordar el rendimiento de los archivos compartidos?
Otras herramientas
Existen otras herramientas que hacen más eficiente el desarrollo. Así que una opción es cambiar estas herramientas.
VirtualBox
Por ejemplo, es posible utilizar una herramienta de virtualización completa.
E instalar Linux y herramientas de desarrollo en la máquina virtual.
Una herramienta ideal podría ser VirtualBox,
que es multiplataforma por lo que puedes ejecutarla no sólo en Linux, sino también en Windows y macOS.
Sin embargo, Docker proporciona cierta automatización de la instalación y configuración. Para ello también existen herramientas estandarizadas. Por ejemplo, yo gestiono servidores Linux. Uso Ansible, otra opción es Puppet y otros.
Vagrant
Puedes utilizar Vagrant, que está específicamente diseñado para proporcionar un entorno de desarrollo. Vagrant es una herramienta que preparará su sistema en una máquina virtual. Puede simplemente usar VirtualBox u otra virtualización perezosa o incluso virtualización de contenedores como virtualización.
Optimización del uso compartido de archivos en Docker
Pero supongamos que quieres seguir con Docker y no añadir más icnología. ¿Cómo solucionar el rendimiento lento de los archivos compartidos?
Compartición Limitada
Una solución muy sencilla es no enlazar todo el proyecto a Docker, sino sólo el directorio con el código fuente que necesitas editar. Mantén las librerías y scripts y datos que se procesan en el contenedor.
Máquina Virtual + Compartir
Ejecuta Linux en una máquina virtual e instala Docker en ella. A continuación, puede utilizar una herramienta estándar como SAMBy (uso compartido de discos) para compartir datos fuera de la máquina virtual. O montar un directorio compartido desde tu máquina a la máquina virtual.
Docker otro uso compartido
No creo que nadie quiera instalar una máquina totalmente virtualizada con Linux y lidiar con Docker. Quedaría la opción de ejecutar SAMBu u otro sharing en Docker. Esto también es posible, puede ejecutar SAMBU en el mismo contenedor Docker - pero este no es el enfoque correcto para Docker. Sin embargo, puede ejecutar SAMBA en un contenedor separado y compartir los datos del proyecto entre contenedores y utilizar SAMBA para compartir los datos con su PC. (Consulte el artículo Docker y Cron para saber cómo ejecutar la aplicación en un contenedor diferente).
Una solución similar sería usar sshfs, ftps, nfs u otro.
Sincronización de datos
Otra solución es no tener el código fuente de la aplicación del contenedor sobre el volumen, sino sincronizar automáticamente los datos. Por ejemplo, Phpstorm puede sincronizar los datos sobre SSH al contenedor cuando se realiza cualquier cambio. También puede detectar cambios externos, por lo que no hay necesidad de reconstruir todo el contenedor cuando el compositor actualiza/instala. Es rápido y funciona de forma fiable y consistente en todas las plataformas.
Formación
A las empresas que quieran agilizar sus operaciones, puedo recomendarles Docker. Y mediante Formación en Docker y la posterior colaboración conjunta, llevaremos Docker a las empresas.
Recursos de interés
Artículos sobre un tema similar
VMware frente a Proxmox: comparación de rendimiento
GitLab CI/CD: automatización de pruebas y despliegue de aplicaciones
Migración de VPS de VMware a Proxmox
Cambio en las licencias de VMware
Ejecución de Microsoft SQL Server en Linux
Copia de seguridad: el Proxmox Backup Server
Linux como router y cortafuegos
Cómo subir una imagen Docker al Registro Docker
Linux: gestión de volúmenes lógicos
Software RAID para Linux
Ejecutar una aplicación web detrás de un proxy
Migración de correo electrónico
Construcción multietapa Docker
Copia de seguridad de los datos al encender el ordenador
Podman
Importación de Windows a la virtualización Proxmox
Docker y correo PHP
Virtualización Proxmox
Docker y Cron
Lenovo ThinkPad X1 Carbon: puesta en servicio del módem LTE EM7544
Proyecto Yocto: Cree un sistema operativo personalizado para dispositivos integrados
Preparación de un servidor Linux para ejecutar una aplicación web en Python
Cómo empezar a utilizar Docker correctamente
Instalación de Linux en un servidor HPE ProLiant DL320e dedicado
Cómo poner a prueba una aplicación web
Por qué utilizar el sistema de archivos JFS
Cómo arrancar desde un disco de 4TB con GTP usando UEFI
Sistema de archivos Btrfs
Raspberry PI
WINE - ejecución de programas Windous en Linux
Sistema operativo GNU/Linux
Boletin informativo
Si está interesado en recibir noticias puntuales por correo electrónico.
Puedes registrarte rellenando tu email
suscripción de noticias.
+