En mi post anterior realicé una comparación entre las máquinas virtuales y Docker. Hoy explicaré varios conceptos que debes conocer antes de empezar a trabajar con Docker.
Conceptos fundamentales
Motor de Docker
El motor de docker es la capa(es un grupo de funcionalidades y componentes agrupados) en la que se ejecuta docker. Es un entorno de ejecución que se encarga de administrar los contenedores, imágenes. Es multiplataforma y consta de 3 partes fundamentales:
- Un servicio o programa residente de Docker que se ejecuta en la computadora anfitriona.
- Un cliente de Docker que se comunica con el daemon para solicitar la ejecución de comandos.
- Una API Rest para que el cliente de docker pueda interactuar con Docker Daemon.
Docker client
El cliente Docker es con lo que usted se comunica cómo usuario final, puede pensar en ello como la interfaz gráfica de docker. Por ejemplo, cuando el usuario ejecuta docker ps se comunica con el cliente de Docker el cual comunica las instrucciones al Docker Daemon.
Docker Daemon
El Docker Daemon es lo que realmente ejecuta los comandos que recibe el Docker client o el cliente de Docker, por ejemplo cuando el usuario ejecuta, elimina, crea algún contenedor. El Docker Daemon se ejecuta en la máquina anfitriona pero como usuario nunca se comunica directamente con el mismo. El cliente Docker puede ejecutarse en la máquina anfitriona, pero no es requerido. Puede ejecutarse en una máquina diferente y comunicarse con el Docker Daemon que se está ejecutando en la máquina anfitriona.
Dockerfile
El dockerfile es un archivo que hace la función de un plano para crear una imagen, contiene instrucciones que se ejecutan para crear la misma, utiliza una notación de YAML.

Docker image
Las imágenes son plantillas creadas a partir de instrucciones contenidas en un Dockerfile, creando una nueva. Las imágenes tienen las instrucciones ya construidas y empaquetadas de cómo estará su aplicación empaquetada y que comandos se ejecutarán al iniciarse, algo que recalcar es que las imágenes son archivos de lectura solamente.
La imagen creada a partir de un dockerfile, cada instrucción en el dockerfile agrega una nueva capa a la imagen, con capas que representan una parte del sistema de archivos de imágenes que agrega o modifica una anterior. Las capas es la clave de que las imágenes ocupen menos espacio en el disco. Docker utiliza este sistema de archivos por unión para lograrlo:
Union file system
Docker agrega un sistema de archivos de lectura y escritura sobre el sistema de archivos de solo lectura de la imagen para crear un contenedor. Docker utiliza la unión file system (sistema de archivo de unión) para crear una imagen. El sistema de archivos de unión básicamente apila cada una de las capas que se genera a partir de las instrucciones en el dockerfile, todas las capas se superponen formando un solo.
Los archivos y los directorios todos apuntan a una misma dirección, lo cual hace verse como un único directorio al terminar de apilarse todas la capas.
Contenedor Docker
Un contenedor Docker envuelve la aplicación con todo lo que necesita para ejecutarse. el código de la aplicación, herramientas del sistema, librerías, dependencias, etc.
Los contenedores se crean a partir de imágenes de Docker. Docker agrega un sistema de archivos de lectura y escritura sobre el sistema de archivos de solo lectura de la imagen para crear un contenedor. Luego de crear el contenedor, docker crea una interfaz de red virtual para que el contenedor pueda comunicarse con el host, y adjunta una dirección IP la misma.
Volúmenes
Los volúmenes permiten conservar y compartir datos de un contenedor. Los contenedores como tal no tienen persistencia de datos, esto significa que cada vez que el usuario elimina un contenedor se borra toda la información en el mismo. Los volúmenes de datos resuelven este inconveniente, los mismos están separados del sistema de archivos de unión y existen como directorios en la máquina del host. Por consiguiente, incluyo si se destruye, actualiza o reconstruye el contenedor, los volúmenes permanecerán.
Conclusión
Ahora ya tienes los conceptos básicos del mismo, estás equipado con el conocimiento necesario para tu próximo paso con Docker. Escribe en los comentarios si he tenido algún error o si puedo darte una mano :).