‫Esta sección va a estar llena de conferencias y asignaciones en torno a datos persistentes.
‫Primero, vamos a discutir los problemas de los datos persistentes y cómo eso se convirtió en
‫un problema en primer lugar.
‫Los conceptos clave que necesita comprender son la idea de una infraestructura inmutable.
‫Y la idea de que los contenedores sean naturalmente efímeros en el diseño.
‫Cubriremos aquellos en la primera conferencia. Luego profundizaremos en los volúmenes de datos y cómo estos resuelven
‫algunos de nuestros problemas en torno a los datos persistentes. Luego también profundizaremos en los montajes de unión y
‫cómo eso resuelve diferentes problemas con datos persistentes. de la base de datos, mientras reemplazamos contenedores por bases de datos.
‫Luego, terminaremos esta sección con un par de asignaciones sobre cómo preservar los datos Y luego también alrededor de montar el código
‫en un contenedor desde el host mientras lo está editando, para que
‫pueda ejecutar ese código dentro del contenedor en vivo. Los requisitos para esta primera conferencia son simplemente entender cómo manejar
‫los contenedores y los conceptos de contenedores e imágenes que hemos discutido hasta ahora.
‫Hasta ahora, solo se ha preocupado por lo que se necesita para ejecutar un contenedor, no por los datos únicos que podrían crearse una
‫vez que se está ejecutando un contenedor.
‫Los contenedores deben ser inmutables y efímeros.
‫Esas son palabras de moda para invariables y temporales, o desechables.
‫La idea aquí es que podemos simplemente tirar un contenedor y crear uno nuevo a partir de una
‫imagen, ¿verdad?
‫Entonces, no estamos hablando de una limitación real de los contenedores, sino de un objetivo de diseño
‫o una mejor práctica.
‫Esta es la idea de una infraestructura inmutable donde no cambiamos las cosas una vez que se están ejecutando.
‫Si es necesario que se produzca un cambio de configuración, o tal vez sea necesario realizar la actualización de la versión del
‫contenedor, volveremos a implementar un contenedor completamente nuevo.
‫Esto nos brinda grandes beneficios en fiabilidad y consistencia, y hace que los cambios sean reproducibles.
‫Pero hay una compensación.
‫¿Qué pasa con los datos únicos que producirá su aplicación? Esas bases de datos, o un valor clave almacena, o cualquier otra
‫cosa que su aplicación escupe en un archivo?
‫Idealmente, los contenedores no deberían contener sus datos únicos combinados con los binarios de la aplicación. Esto se conoce como "separación de
‫preocupaciones" y Docker realmente nos da un gran beneficio aquí.
‫Podemos actualizar nuestra aplicación mediante la recreación de un nuevo contenedor, con una versión actualizada de nuestra aplicación, e
‫idealmente, nuestros datos únicos se encuentran donde deben estar y se conservaron mientras nuestro contenedor se reciclaba.
‫En caso de que no lo haya notado hasta ahora, los contenedores que hemos estado usando, de forma predeterminada, eran persistentes.
‫Cualquier cambio en ellos en realidad se mantuvo a través de reinicios y reinicios hasta que eliminamos el contenedor.
‫El hecho de que hayamos detenido el contenedor o reiniciado el host,
‫no significa que los cambios en el archivo del contenedor desaparezcan.
‫Es solo cuando eliminamos el contenedor que su capa UFS se va, pero queremos poder
‫hacerlo a voluntad.
‫Este problema de datos únicos se conoce en la industria como "datos persistentes" y hasta los
‫contenedores, realmente no teníamos un nombre para eso. Porque, bueno, la mayoría de las cosas que creamos eran persistentes, como
‫si supieras esos viejos servidores que han estado ejecutando esa aplicación vieja durante cinco o 10 años o más.
‫Todo era persistente por defecto.
‫Ahora, en el nuevo mundo de la escala automática de contenedores y aplicaciones, los datos persistentes crean
‫un problema único.
‫Docker tiene dos soluciones para este problema, conocidas
‫como "volúmenes de datos" y "montajes de enlace". "Los volúmenes de Docker son una opción de
‫configuración para un contenedor que crea una ubicación especial fuera del sistema
‫de archivos de unión de ese contenedor para almacenar datos únicos.
‫Esto lo preserva a través de las eliminaciones de contenedores y nos permite adjuntarlo a cualquier contenedor que deseemos.
‫Y el contenedor simplemente lo ve como una ruta de archivo local.
‫Luego están las monturas de unión, que simplemente nos permiten compartir o montar un directorio de host, o un archivo, en un contenedor.
‫De nuevo, se verá como una ruta de archivo local, o una ruta de directorio, al contenedor.
‫En realidad, no sabrá que proviene del host.