Un docker es una aplicación en una sandbox (llamada container). No es lo mismo “imagen” que “docker” (contenedor). Aunque un contenedor es solo un servicio “enjaulado” y una instancia (estrictamente hablando) podría estar compuesta de uno o varios contenedores, la verdad es que a veces se utilizan ambos conceptos como sinónimos. En este texto emplearemos contenedor e instancia como sinónimos, pero siempre tendremos en cuenta la siguiente relación:
1 instancia = 1 o más contenedores
Por otro lado, un contenedor o instancia es una ejecución de una imagen.
El docker o contenedor (como ya se ha dicho) está aislado del sistema operativo y tiene “lo justo” (aplicación + dependencias) para poder ser ejecutado con el consumo de muy pocos recursos. Sus grandes ventajas: Portabilidad, descarga anywhere (Repos), ejecución asegurada, pocos consumos de recursos, seguridad más alta, gestión y auto escalado implementado (etc.).
Existen dos tipos de imágenes:
- Imágenes BASE — > no son heredadas de ningún “padre” y suelen ser sistemas operativos como Ubuntu, Debian o Python.
- Imágenes Hijo — > son imágenes base a las que se les ha añadido una funcionalidad.
Aparte de esta clasificación se podrían clasificar en “imágenes oficiales” (suelen tener un nombre largo sin barras) e “imágenes de usuarios” (suelen tener una dependencia como usuario/nombre_imagen).
Por último, existen imágenes “onbuild” (como la que se usa en este ejemplo) que utilizan un archivo llamado “requirements.txt” para que se auto creen.
Existen un montón de imágenes disponibles en docker_hub, con el comando docker search podemos buscarlas.
2 Comentarios
Sebastian
Gracias!
Guillermo
Espero que te haya servido 😉