Este documento presenta una introducción a Docker y Cloud Native Computing. Explica que Docker puede mejorar el diseño, despliegue y operación de software al eliminar la complejidad de empaquetar y ejecutar aplicaciones en múltiples entornos. También introduce conceptos como contenedores, imágenes, redes y volúmenes de Docker, y herramientas como Dockerfile y Docker Compose para crear y administrar aplicaciones multi-contenedor. El objetivo es difundir estas tecnologías en Chile y capacitar a más talento local en su uso.
7. Cloud Native Computing Chile
● Comunidad de entusiastas de Cloud Native
● Basado en las directrices y proyectos de la Cloud Native Computing
Foundation (https://www.cncf.io/)
● Difundir y aportar a la industria del software en Chile
● El modelo Open Source como referencia y preferencia
8. Motivación
● Gran oportunidad para mejorar el diseño despliegue y operación de los
desarrollos de Software
● La disponibilidad de herramientas de Clase Mundial
● Comunidad internacional Cloud Native creciendo exponencialmente
● Necesidades de talento capacitado en la Industria
● Necesidad de una visión completa. Mas alla de tecnologías especificas
9. ¿Quiénes se motivaron?
Jesús Rodríguez
Founder - Organizer
Natalia Rivera
Co-Organizer
Ramón Bastidas
Co-Organizer
Jonathan González
Co-Organizer
10. ¿Qué queremos lograr?
● Comunidad que comparta experiencias y conocimientos en Cloud Native
● Vínculo entre la industria ( vendor, consumidores, proveedores) y talento
local
● Apoyar a las organizaciones en la adopción de las prácticas de Cloud
Native
● Generar equipos para aportar a los proyectos Open Source sobre Cloud
Native
11. Ahora, a lo que vinimos
https://docs.docker.com/install/
https://github.com/cerberuz/docker-
workshop
12. El Reto
● Gran oportunidad para mejorar el diseño despliegue y operación de
los desarrollos de Software
● La disponibilidad de herramientas de Clase Mundial
● Comunidad internacional Cloud Native creciendo exponencialmente
● Necesidades de talento capacitado en la Industria
● Necesidad de una visión completa. Mas alla de tecnologías
especificas
23. Consideraciones
● Si corre en Linux, corre en un Container.
● Solo para entornos Linux POR DEFECTO.
● Creación de entornos aislados.
● Permite Escalar de manera Rapida
● Rapidos Despliegues en clientes
● Usuario ROOT en container
24. Vamos donde nos quedamos
https://docs.docker.com/install/
Para verificar:
docker info
Para sobrevivir:
docker --help
25. Algunos comandos básicos - container
● docker run image
● docker container ls
● docker run -d -p HOST_PORT:CONTAINER_PORT --name NAME IMAGE
● docker container stopt/start/kill
● docker container rm
● docker container logs
● docker container inspect
26. Algunos comandos básicos - images
● docker image ls
● docker image pull
● docker login (El registry y el hub)
● docker image push
● docker image rm
● docker image tag
● docker image prune
27. Creando una imagen con Dockerfile
● FROM image:tag
● WORKDIR value
● CMD ["executable", "param1", "param2"]
● EXPOSE Port
● ENV Key Value
● RUN ["executable", "param1", "param2"]
● ENTRYPOINT ["executable", "param1", "param2"]
31. Gestionando los datos en docker - Volumes
● Los Volumes se almacenan en una parte del sistema de archivos de
host que es administrado por Docker (/ var / lib / docker / volumes /
en Linux).
○ Los procesos no Docker no deberían modificar esta parte del
sistema de archivos
○ Los Volumes son la mejor forma de conservar datos en Docker.
32. Gestionando los datos en docker - Volumes
● docker volume create my-vol
● docker volume ls
● docker volume inspect my-vol
● docker volume rm my-vol
● docker run -d --name devtest --mount source=myvol2,target=/app nginx
● docker run -d --name devtest -v myvol2:/app nginx:latest
●
33. Gestionando los datos en docker - Bind tmpfs
● Los Bind-mounts pueden almacenarse en cualquier lugar del sistema host.
Incluso pueden ser archivos o directorios importantes del sistema.
○ Los procesos que no son Docker en el host Docker o en un contenedor
Docker pueden modificarlos en cualquier momento
● Los volúmenes Los montajes de tmpfs se almacenan en la memoria del
sistema host únicamente
○ Nunca se escriben en el sistema de archivos del sistema host.
○ Solo está disponible en la versión de Docker para Linux
34. Gestionando los datos en docker - Bind-tmpfs
● Iniciar un container con Bind-mount
○ docker run -d -it --name devtest -v "$(pwd)"/target:/app nginx:latest
● Bind-mount en el container con permisos de solo lectura
○ docker run -d -it --name devtest -v "$(pwd)"/target:/app:ro
nginx:latest
● Iniciar un container con tmpfs
○ docker run -d -it --name tmptest --tmpfs /app nginx:latest
35. Gestionando los datos en docker - Secrets
● Se utilizan para gestionar los datos sensibles.
○ Requeridos en el runtime
○ No deben ser almacenados en la imagen o el proyecto
● Se pueden usar para gestionar data no sensible pero se recomienda usar
configs en su lugar
● En sistemas *nix son almacenados en RAM “/run/secrets/SECRET_NAME”
● En sistemas Windows se almacenan en la persistencia como texto plano
36. Multi-Containers Apps - Docker-Compose
● Docker-Compose es una herramienta para definir y ejecutar aplicaciones
Docker multi-container.
○ Define la aplicacion en lengua DSL en formato YML
docker-compose.yml
○ Posee un CLI para gestionar todo el ciclo de vida de la aplicacion.
37. Multi-Containers Apps - Docker-Compose
● docker-compose up
● docker-compose up -f FILENAME
● docker-compose down
● docker-compose restart
● docker-compose scale (deprecated)
● docker-compose events