Contenedores e imágenes.
Desde la izquierda, vemos múltiples capas de solo lectura, que se superponen. Todas las capas, excepto la capa inferior, tienen un puntero a la siguiente capa. Estas capas son detalles de implementación dentro de Docker y se puede acceder a ellas en el sistema de archivos del host. La tecnología del sistema de archivos Union puede integrar diferentes capas en un sistema de archivos, proporcionando una perspectiva unificada para estas capas y ocultando así la existencia de múltiples capas. Desde la perspectiva del usuario, sólo existe un sistema de archivos. Podemos ver la forma de esta perspectiva en el lado derecho del diagrama.
Puede encontrar documentación para estas capas en el sistema de archivos de su host. Cabe señalar que estas capas no son visibles dentro del contenedor en ejecución.
/var/lib/docker/
├── aufs
├──Contenedor
├──Imagen
├──Inicialización
├──Diagrama de enlaces db
├──Base de conocimientos
├── tmp
├──Trust
└──Volumen
7 directorios, 2 archivos
La definición del contenedor es casi la misma que la imagen, y También es un montón de capas de perspectiva unificada. La única diferencia es que el nivel superior del contenedor se puede leer y escribir.
La definición de contenedor no menciona si el contenedor se está ejecutando.
Punto clave: contenedor = imagen + capa legible. Y la definición del contenedor no menciona si se debe ejecutar el contenedor.
Un contenedor en ejecución se define como un sistema de archivos unificado de lectura y escritura más un espacio de proceso aislado y los procesos contenidos en él. La siguiente imagen muestra el contenedor en acción.
Es la tecnología de aislamiento del sistema de archivos lo que hace de Docker una tecnología prometedora. Los procesos en el contenedor pueden modificar, eliminar y crear archivos, y estos cambios se aplicarán a la capa de lectura y escritura. La siguiente imagen muestra este comportamiento.
Incluso si el contenedor de Ubuntu ya no se está ejecutando, aún se pueden encontrar nuevos archivos en el sistema de archivos del host.
/var/lib/docker/aufs/diff/860 a7b...889/happy . txt
Para integrar datos dispersos, propusimos el concepto de capa de imagen. La siguiente imagen muestra una capa de espejo. En la imagen, podemos encontrar que una capa no solo contiene cambios en el sistema de archivos, sino que también contiene otra información importante.
Los metadatos son información adicional sobre esta capa, que no solo permite a Docker obtener información en tiempo de ejecución y tiempo de compilación, sino que también incluye información jerárquica sobre la capa principal. Cabe señalar que tanto la capa de solo lectura como la de lectura y escritura contienen metadatos.
Además, cada capa contiene un puntero a la capa principal. Si una capa no tiene este puntero, significa que está en la parte inferior.
Ubicación de los metadatos:
En mi propio host, los metadatos de la capa de imagen se guardan en un archivo llamado "json", por ejemplo:
/var /lib/docker/graph/e809f 156 DC 985.../json
E809f156dc985... es la identificación de este piso.
Los metadatos de un contenedor parecen estar divididos en muchos archivos, pero se pueden encontrar en /var/lib/docker/containers/
Consulte el contenedor acoplable y las diferencias de imagen