Date post: | 22-Jan-2017 |
Category: |
Software |
Upload: | mario-j-inga-cahuana |
View: | 137 times |
Download: | 2 times |
Docker Ecosystem - Part I
by @mario21ic
TalleresUNT
AgendaIntro a Containers
Containers vs VMs
Docker Engine
Comandos
Dockerfile
Recomendaciones
ContainersChroots con esteroides
Son procesos aislados que corren con recursos asignados.
Comparten el mismo kernel del host
Livianos a comparacion de Hypervisor
Containers vs VMS
Containers vs VMS
Docker Engine
El problema
Solución
Docker EngineUna plataforma abierta para aplicaciones distribuidas para Developers y Sysadmins
Desarrollado inicialmente en Python y migrado a Go
Servidor (Linux) - Cliente (multiplataforma)
Open-source https://github.com/docker/docker
Docker Server - Cliente
Docker Engine
Docker syntax
command: accion a ejecutar
params: para cambiar comportamiento
image: la plantilla a usar
tag: la version de la plantilla
$ docker <command> [params] <image>:[tag]
Demo Images: search & pull• En cli ejecutar:
• Verificar:
$ docker search alpine
$ docker pull alpine:latest
$ docker images
Demo Container: Hello• En cli ejecutar:
• Verificar en otro terminal:
$ docker run -ti debian echo "Hello from container"
$ docker ps -a
Docker
Demo Container: Bash• En cli ejecutar:
• Verificar en otro terminal:
$ docker run -ti debian:latest /bin/bash
$ docker ps
$ docker ps -a
Demo Container: Forward port• En cli ejecutar:
• Abrir browser:
http://localhost:8080/
$ docker run --name mynginx -p 8080:80 nginx
Demo Container: Volume• En cli ejecutar:
• Abrir browser:
http://localhost:8080/
$ docker run --name mynginx \-v $(pwd)/html:/usr/share/nginx/html \-p 8080:80 nginx
Container save as Image• En cli ejecutar:
• En otro terminal:
• Verificar:
$ docker run --name container_debian -ti debian bash
# apt-get update && apt-get install -y htop
$ docker commit container_debian debian_hola
$ docker images
Dockerfile
Y como genero mi propio Docker Image personalizado?
Dockerfile• Generar archivo Dockerfile con contenido:
FROM nginx:latestMAINTAINER Mario Inga <[email protected]>
RUN echo 'Building from Dockerfile'COPY html/index.html
/usr/share/nginx/html/index.html
Dockerfile• Ejecutar:
• Verificar: • Usar la imagen:
$ docker build -t image_from_dockerfile:latest .
$ docker images
$ docker run --name newcontainer -p 8088:80 -d image_from_dockerfile
Docker Link• Ejecutar:
• Browser: http://localhost:8080/• Consola:
$ docker run --name some-mysql -p 3306:3306 \-e MYSQL_ROOT_PASSWORD=miclavedb -d mysql$ docker run --name some-wordpress \--link some-mysql:mysql -p 8080:80 -d wordpress
$ docker exec -ti some-wordpress bash
RecomendacionesAntes de dockerizar un app primero mapear sus servicios.
Cada container debe ser responsable de un solo proceso.
Usar solo volumen en caso sea necesario.
Separar sus configs docker-compose.yml
Aprovechar la reutilizacion de capas al crear imagenes.
Preguntas?