Está en la página 1de 24

¿Qué es docker?

Docker es una herramienta que automatiza el despliegue de


aplicaciones dentro de contenedores de software, proporcionando
una capa adicional de abstracción y automatización de
virtualización de aplicaciones en múltiples sistemas operativos.
¿Qué es docker?

Permite a los usuarios crear entornos independientes y aislados


para desplegar e implementar sus aplicaciones. Estos entornos se
denominan contenedores. Esto permite que el desarrollador
ejecute un contenedor en cualquier máquina. Eliminando los
problemas de compilación en ambientes distintos.
Arquitectura de Docker

Docker está compuesto por varios elementos:


• Docker Host
• Docker Daemon (Servidor)
• Docker CLI (Cliente)
• Rest API (Intermediario)
¿Qué es una imagen?

Son todas aquellos ambientes que han sido creados para su


despliegue dentro de contenedores. Contienen todo lo necesario
para la correcta ejecución y/o despliegue de la aplicación.
Características de una imagen
• Se componen de capas
• Mínimo deben contener un sistema operativo, la instalación de
dependencias y la ejecución del aplicativo
• Tienen permisos de solo lectura
• Se definen por medio del archivo “Dockerfile” o un YML
• Deben definir un comando que se mantenga en primer plano
¿Qué es un contenedor?

Es la implementación de una imagen existente dentro del docker


host. Es la unidad “manipulable” de docker. Permite el acceso a
todo lo contenido dentro de una imagen.
Características de un contenedor
• Se genera a partir de una imagen
• Tienen permiso de escritura y lectura, aunque de forma temporal
• Pueden interactuar con otros contenedores
• Pueden ser detenidos e iniciados manualmente
• Se puede configurar el puerto en el cuál se quiere estén
disponibles
• Se pueden generar varios contenedores a partir de una misma
imagen
¿Por qué docker y no una MV?

Docker NO es una máquina virtual. Docker crea “servicios” dentro de tu


PC, los cuáles, como los demás servicios, acceden de forma dinámica a
la memoria RAM, al HDD y al CPU de tu PC. A diferencia de una MV que
requiere recursos especialmente destinados a su funcionamiento
Maquina Virtual Docker (Linux) Docker (No Linux)
Comandos básicos
• docker pull [name]:[tag]: Descarga una imagen del docker hub
• docker images: Despliega el listado de imágenes descargadas
• docker run: Inicia un contenedor nuevo
• docker stop/start/restart [id]: Detiene, inicia o reinicia un contenedor.
• docker kill [id]: Mata el proceso de un contenedor.
• docker ps: Despliega el listado de contenedores.
• docker rm [id]: Elimina un contenedor
• docker rmi [id]: Elimina una imagen
Creando una imagen
Si dentro del dockerhub no existe una imagen que se adapte
a nuestras necesidades siempre podemos crear una imagen
con los servicios que necesitamos. Para esto debemos definir
nuestro archivo Dockerfile
Comandos (Capas)
• FROM: Define el “sistema” base de nuestra imagen
• RUN: Ejecuta comandos dentro del “sistema”
• COPY: Copia archivos al contenedor COPY [ruta local] [ruta container]
• ADD: Funciona como COPY, acepta URLS en lugar de archivos
• ENV: Crea variables de entorno ENV [name] [value]
• WORKDIR: Apunta a una ruta dentro del contenedor para que todo el
dockerfile se ejecute en dicho contexto.
Comandos (Capas)
• EXPOSE: Permite exponer puertos del contenedor EXPOSE [puerto]
• LABEL: Permite agregar metadata a la imagen
• USER: Permite seleccionar el usuario que se usará para los comandos
• VOLUME: Data persistente
• CMD: Comando que mantiene vivo el contenedor, tiene que dejar un
proceso en primer plano
• .dockerignore: Define elementos a ignorar en el contexto del build
Volúmenes
Los volúmenes nos permiten definir un “espacio” compartido entre
contenedores para persistir información a nivel del host principal. Estos
espacios compartidos deben ser referenciados con una ruta definida,
esto puede ser durante la creación del contenedor para hacerlo de forma
dinámica o bien desde la definición de la imagen (Dockerfile) si se tiene la
certeza del acceso al volumen indiferentemente del contexto en el que
esta pueda ser desplegada.

docker run -v [RutaHost]:[RutaContenedor] [imagen]


Host

Contenedor A Contenedor B

Volumen Volumen

FileSystem

Volumen
Windows

Generador Nginx
/
/opt usr/share/nginx/
html

FileSystem

\nginx\Share

También podría gustarte