Arquitectura de Docker
Docker usa una arquitectura cliente-servidor. El cliente de Docker habla con el Daemon de Docker que hace el trabajo de crear, correr y distribuir los contenedores. Tanto el cliente como el Daemon pueden ejecutarse en el mismo Sistema, o puede conectar un cliente remoto a un daemon de docker.
El cliente de Docker es la principal interfaz de usuario para docker, acepta los comandos del usuario y se comunica con el daemon de docker.
Para entender como funciona docker internamente debemos conocer tres componentes.
Imágenes de Docker (Docker Images)
Las imágenes de Docker son plantillas de solo lectura, es decir, una imagen puede contener el Sistema operativo de CentOS o Ubuntu con apache instalados, pero esto solo nos permitirá crear los contenedores basados en esta configuración. SI hacemos cambios en el contenedor ya lanzado, al detenerlo esto no se verá reflejado en la imagen. Mas adelante entenderemos esta parte.
Registros de Docker (Docker Registries)
Los registros de Docker guardan las imágenes, estos son repos públicos o privados donde podemos subir o descargar imágenes. El registro público lo provee el Hub de Docker que sirve una colección de imágenes para nuestro uso. Los registros de dockers básicamente son el componente de Distribución de Docker.
Contenedores de Docker (Docker Containers)
El contenedor de docker aloja todo lo necesario para ejecutar una aplicación. Cada contenedor es creado de una imagen de docker. Cada contenedor es una plataforma aislada.
Veamos gráficamente la arquitectura