DOCKER BY: ANTHONY ALCARRAZ ANDRES MONTENEGRO ANTHONY CARRERA SAMIR VERA BALDEON JORDAN PEREZ ALLER INTRODUCCION - Las aplicaciones necesitan mas recursos - Con el nuevo modelo de contenedores podemos abstraernos del S.O. donde corre el motor Docker. - Diseñados para un mundo Cloud, distribuido. - ANTECEDENTES : - Por el año 2000 nace FreeBSD jails – separa sus servicios y la de los clients - 2015-Open VZ - Tecnología de virtualización a nivel de sistema operativo que utiliza un kernel Linux parcheado para virtualización - Docker fue liberado como código abierto en marzo de 2013 - Docker como nace un proyecto interno dentro dotCloud ¿ QUE ES DOCKER ? Docker es una plataforma abierta para que desarrolladores y administradores de sistemas desarrollen, envíen y ejecuten aplicaciones distribuidas, ya sea en computadoras portátiles, maquinas virtuales de centros de datos o en la nube. En Docker lo que se hace es usar las funcionalidades del Kernel para encapsular un sistema, de esta forma el proyecto que corre dentro de el no tendrá conocimiento que está en un contenedor. VENTAJAS • Uso eficiente de recursos (CPU, Memoria) • Menor consumo de disco (mucho menor) • Control de versiones de imágenes y capas • Levantan muy rápido (milisegundos) • Ideales para Microservicios y DevOps • Fácilmente automatizables • Son muy fáciles de transportar y recrear (text file) DOCKER VS VIRTUAL MACHINES (VM) ARQUITECTURA DOCKER COMPONENTES DE DOCKER ❑ Imagen.- Son plantillas (que incluyen una aplicación, los binarios y las librerías necesarias) que se utilizan para construir contenedores Docker. ❑ Contenedores.- Es una capa de ejecución de imágenes las cuales son paquetes cerrados que contienen todo lo encapsulado dentro de una solo imagen completamente. ❑ Volumenes.-Un volumen de datos es una carpeta física en nuestro equipos donde se almacenan datos del contenedor. ❑ Redes.- Herramienta que permite conectar contenedores a travez de redes. IMAGEN # Enlista las imagenes cargadas en el docker server. • $docker images # Cargar una imagen official o de docker hub al docker server • $docker pull nombre_de_imagen • Fichero Dockerfile • Es un archivo de texto plano que contiene las instrucciones necesarias para automatizar la creacion de una imagen que será utilizada posteriormente para la ejecución de instancias especificas ( i.e. contenedores ). DOCKERFILE FROM nginx RUN useradd docker_user COPY nombre_de_aplicación_web /usr/share/nginx/html ENV archivo Docker WORKDIR /usr/share/nginx/html EXPOSE 90 LABEL versión: 1 USER Docker_user VOLUMEN /var/log/nginx CMD nginx -g 'daemon off; CONTENEDORES #Crea imagen personalizada • $docker build –t “nombre_de_tag” –m “limite_de_memoria” –f “define_nuevo_dockerfile” –network “define_la_red_del_contenedor” . #Enlista los contenedores activos y terminados • $ docker ps -a # Corre imagen en Segundo plano • $docker run -d “nombre_de_imagen” # Corre imagen en Segundo plano definiendo puertos • $docker run -d -p “Puerto_de_maquina”:“Puerto_del_contenedor” “nombre_de_imagen” #Detiene y elimina el contenedor. • $docker rm -f “name_del_contenedor” NETWORK • $docker network ls .- Enlista las redes docker # Crear una nueva red • $docker network create “nombre_de_la_red” #Crear una red y especificar la subnet y gateway • $docker network create --subnet 192.168.0.0/24 --gateway 192.168.0.1 “nombre_de_la_red” #Muestra la configuracion de la red • $docker network inspect “nombre de la red” #Asignar una direccion ip a un contenedor • $docker run --network “nombre_de_red” --ip DOCKER COMPOSE Docker Compose es una herramienta que permite simplificar el uso de Docker, generando scripts que facilitan el diseño y la construcción de servicios. Con Docker Compose puedes crear diferentes contenedores y al mismo tiempo, en cada contenedor, diferentes servicios DOCKER-COMPOSE.YML Version: “numero de version de docker compose” Services: “nombre-del-servicio”: image: “Nombre de la imagen” container-name: “Nombre del contenedor” ports: -“Puerto-maquina”: “Puerto de contenedor” environment: - “define variables de entorno” volumens: - “ “nombre-del-volume”: “directorio la cual queremos almacenar” ” network: - “nombre de la red” Volumes: “nombre-del-volume” Network: “nombre de la red creada en docker”: DOCKER COMPOSE #Crear imagenes con docker compose $docker compose build #Especificar el docker compose.yml y correrlo $docker-compose -f “nombre del nuevo docker-compose.yml” up –d #Acabar con un contenedor $docker-compose -f “nombre del contenedor” down REFERENCIAS ❑ ❑ ❑ ❑ ❑ ❑ ❑ https://docs.docker.com/ http://qadfhc.blogspot.com/2018/05/microservicios-ventajas-y-desventajas.html https://www.oscarblancarteblog.com/2018/05/22/que-son-los-microservicios/ https://medium.com/platformer-blog/practical-guide-on-writing-a-dockerfile-for-your-application-89376f88b3b5 https://eltallerdelbit.com/imagenes-docker/ https://dockertips.com/volumenes https://guacamole.apache.org/doc/gug/guacamole-docker.html