Estoy aprendiendo Docker. Al leer un libro de Docker, dice "no se recomienda ejecutar aplicaciones con estado (es decir, motores de bases de datos) en Docker". También escuché de un amigo mío que usa MySQL en Docker sin problemas.
¿Es una buena práctica ejecutar aplicaciones con estado en Docker? ¿Cuáles son los escenarios en los que Docker encaja mejor?
El problema con las aplicaciones docker con estado completo es que, de forma predeterminada, almacenan su estado (datos) en el sistema de archivos de los contenedores. Una vez que actualice su versión de software o desee cambiarse a otra máquina, es difícil recuperar los datos desde allí.
Lo que debe hacer es vincular un volumen al contenedor y almacenar cualquier dato en el volumen. Este volumen puede estar en el host que ejecuta el contenedor o en otro lugar. Esta imagen explica las diferentes configuraciones.
si ejecuta su contenedor con: docker run -v hostFolder:/containerfolder cualquier cambio en /containerfolder se mantendrá en la carpeta de host. Se puede hacer algo similar con una unidad nfs. Luego puede ejecutar su aplicación en cualquier máquina host y el estado se guardará en la unidad nfs.