Introduction
Usa los procesos y las capacidades de sistema de archivos de Linux Kernel que garantiza el tan demandado aislamiento
Usa una imagen de OS reducida que no incluye un Os completo
Consume poca memoria
Los tiempos de inicio son significativamente menores que en una típica VM
Velocidad de codificación y despliegue de aplicaciones
Facilmente empaquetado para los despliegues
Ampliamente compartido
Notable ahorro de recursos en TI
Que es una imagen para Docker?
Son plantillas de solo lectura que son utilizadas para crear contenedores, en otras palabras es el entorno donde publicamos el código de una aplicación para que esta pueda funcionar.
Las imagenes se crean con el comando:
este comando toma un archivo llamado docker file limpio para poder crear la imagen, las imágenes también pueden ser creadas con el comando:
mientras se esta trabajando con un contenedor de modo interactivo
las imágenes se componen de otras imágenes, por lo tanto dan como resultado una sola imagen con todas las herramientas necesarias para correr una aplicación, por ejemplo puedo partir de una imagen de ubuntu y le puedo combinar con Php y asi sucesivamente hasta completar las dependencias de la aplicación.
Las imágenes se almacenan en un Registry de docker.
Analogía con oop (clases)
Si una imagen es como una clase, un contenedor es como una instancia de una clase, un objeto en ejecución.
Los contenedores son una encapsulación ligera y portable de un entorno en donde se ejecutan las aplicaciones
Los contenedores son creados a partir de las imágenes. dentro de un contenedor se tienen todas los archivos binarios y dependencias necesarias para las aplicaciones.
Que es un Registry ?
Es el lugar donde almacenamos las imágenes de docker, podemos crear nuestro Registry privado o hacer uso de Registry público llamado Docker Hub
Comandos comunes
Consultar version de docker instalada en la maquina
para ver las imágenes que están instaladas en mi maquina
para detener un contenedor
para listar los contenedores con estado "Up" o que estas en ejecución
con el flag de -a listo todos los contenedores creados
para ver toda la información de bajo nivel del contenedor
Una vez este corriendo el contenedor podemos ver los logs de lo que pasa en el contenedor
-f con este flag para que el terminal este a la espera de eventos para mostrar, asi:
para ver las capas de una imagen de docker
para ejecutar tareas dentro de un contenedor en ejecución se utiliza exec (a continuación para ejecutar bash)
para listar solo los id de los contenedores en la maquina (incluyen los que no tienen estado "Up")
para detener todos los contenedores corriendo actualmente en la maquina
para remover todos los contenedores de la maquina
para remover todas las imagenes
Comandos para iniciar una sesión interactiva desde una imagen
Para crear un contenedor partiendo desde una imagen linux de docker. Alpine es una distribución linux muy liviana (5MB), de esta manera se inicia el contenedor que imprime en el terminal:
Si se quiere iniciar desde la imagen de alpine y visualizar el sistema de archivos (tener en cuenta los espacios):
Ahora iniciando una sesión interactiva (para manipular el contenedor) para tener una terminal virtual de el contenedor iniciado:
para ello usamos -i -t -i significa input que quiere decir que el contenedor recibe los comandos enviados desde el teclado
-t terminal nativa del contenedor
A partir de acá podemos enviar comandos comunes en la terminal: ls , cd, etc e ir explorando el contenedor
Comandos para correr un contenedor con volumen compartido
Volumen compartido quiere decir que enviaremos directamente los archivos que queremos que esten en el sistema de archivos del contenedor.
Para crear instancias de contenedores se usa docker run, pero esto se complementa con algunos flags adicionales:
--rm para eliminar el contenedor una vez se deje de usar (se detenga)
--name para adicionar el nombre del contenedor, si no se asigna docker engine pone un random-name
-d significa detach o desacoplado y quiere decir que el contenedor se ejecuta en background
-p publish para asignar el mapeo del puerto del host con el puerto del contenedor ej: 8080:80 (se redirige el trafico del host 8080 al puerto 80 de contenedor)
-v un volumen. Para enviar contenido al contenedor, por ejemplo enviar los archivos en desarrollo (ej: index.html). Se separa con : el contenido origen con el contenido destino: /some/content: usr/nginx/html
$(pwd) indica que el volumen de origen es el directorio de donde se está ejecutando el comando, se utiliza como short-cut y evitar escribir un "path"
Capas en docker
Las imágenes de docker son inmutables, toda la información, archivos, edición y software adicionado se hace en una nueva capa de la imagen inicial, esta capa se llama capa de contenido editable.
Cuando un contenedor es eliminado, su capa de contenido editable también es eliminada, pero la imagen de origen permanece intacta.
Varios contenedores pueden compartir la misma imagen origen y aun así su capa editable (datos e información) puede diferir sin ningún problema. A continuación varios contenedores que se originan desde la misma imagen de ubuntu:
Last updated
Was this helpful?