Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry
-
Upload
mario-j-inga-cahuana -
Category
Software
-
view
925 -
download
0
Transcript of Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry
![Page 1: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/1.jpg)
Docker Ecosystem
by @mario21ic
![Page 2: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/2.jpg)
Agenda
Docker Engine
Docker Compose
Docker Machine
Docker Swarm
Docker Registry
![Page 3: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/3.jpg)
Docker Engine
![Page 4: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/4.jpg)
El problema
![Page 5: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/5.jpg)
Solución
![Page 6: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/6.jpg)
Docker Engine
Una plataforma abierta para aplicaciones distribuidas para developers y sysadmins
Desarrollado inicialmente en Python y migrado a Go
Servidor - Cliente
Open source
![Page 7: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/7.jpg)
Docker Engine
![Page 8: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/8.jpg)
Docker Engine
![Page 9: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/9.jpg)
Demo Images: search & pull• En cli ejecutar:
$ docker search alpine
$ docker pull alpine:latest
• Verificar:
$ docker images
![Page 10: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/10.jpg)
Demo Container: Hello• En cli ejecutar:
$ docker run -ti debian echo "Hello from container"
• Verificar en otro terminal:
$ docker ps -a
![Page 11: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/11.jpg)
Docker Hub
![Page 12: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/12.jpg)
Demo Container: Bash• En cli ejecutar:
$ docker run -ti debian:latest /bin/bash
• Verificar en otro terminal:
$ docker ps
![Page 13: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/13.jpg)
Demo Container: Forward port• En cli ejecutar:
$ docker run --name mynginx -p 8080:80 -d nginx
• Abrir browser:
http://localhost:8080/
![Page 14: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/14.jpg)
Demo Container: Volume• En cli ejecutar:
$ docker run --name mynginx -v $(pwd)/html:/usr/share/nginx/html -p 8080:80 -d nginx
• Abrir browser:
http://localhost:8080/
![Page 15: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/15.jpg)
Container save as Image• En cli ejecutar:
$ docker run --name container_debian -ti debian bash
# echo "hello from container debian"
• En otro terminal:
$ docker commit container_debian debian_hola
• Verificar:
$ docker images
![Page 16: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/16.jpg)
Dockerfile
Y como genero mi propio Docker Image personalizado?
![Page 17: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/17.jpg)
Dockerfile• Generar archivo Dockerfile con contenido:
FROM nginx:latest
MAINTAINER Mario Inga <[email protected]>
!
RUN echo 'Building from Dockerfile'
COPY html/index.html /usr/share/nginx/html/index.html
![Page 18: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/18.jpg)
Dockerfile• Ejecutar:
$ docker build -t image_from_dockerfile:latest .
• Verificar: $ docker images
• Usar:
$ docker run --name newcontainer -p 8088:80 -d image_from_dockerfile
![Page 19: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/19.jpg)
Docker Link• Ejecutar:
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=myclavesecreta -d mysql:latest
$ docker run --name some-wordpress --link some-mysql:mysql -p 8080:80 -d wordpress
• Browser: http://localhost:8080/
![Page 20: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/20.jpg)
Docker Compose
![Page 21: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/21.jpg)
ProblemaContainers aislados
Configurar la ip cada vez que reinicia
Compartir configs
Construir cada Image desde Dockerfile
Escalar un container
![Page 22: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/22.jpg)
Docker ComposePermite una facil orchestacion entre containers
Configuracion en un "docker-compose.yml"
Desarrollado en Python
Instalacion: pip install docker-compose
![Page 23: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/23.jpg)
docker-compose.ymlnginx:
build: .
volumes:
- ./html:/usr/share/nginx/html
ports:
- "8080:80"
![Page 24: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/24.jpg)
docker-compose.ymlwordpress:
image: wordpress
links:
- db
ports:
- 8080:80
db:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: example
![Page 25: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/25.jpg)
Docker Compose
Demo
![Page 26: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/26.jpg)
docker-compose.ymlweb:
image: odoo:8
volumes:
- ./odoo_vps:/mnt/extra-addons/odoo_vps
links:
- db
ports:
- "8069:8069"
db:
image: postgres:latest
environment:
POSTGRES_USER: odoo
POSTGRES_PASSWORD: odoo
![Page 27: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/27.jpg)
Docker Compose
Demo
![Page 28: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/28.jpg)
Docker Machine
![Page 29: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/29.jpg)
Docker MachinePara la manipulacion de Docker hosts
Provee Docker hosts para: Digital Ocean, VirtualBox, Azure, Amazon, etc
Integración nativa con Docker Swarm
![Page 30: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/30.jpg)
Docker Machine
Demo
![Page 31: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/31.jpg)
Docker MachineCrear Host:
$ docker-machine create -d virtualbox devopsday
Listar: $ docker-machine list
Conectar:
$ eval "$(docker-machine env devopsday)"
Verificar: docker info
![Page 32: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/32.jpg)
Docker MachineProbar:
$ docker run apline echo 'Hello from Machine'
Deploy:
$ docker-compose up
![Page 33: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/33.jpg)
Docker Swarm
![Page 34: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/34.jpg)
Docker Swarm
Cluster de forma nativa
Permite programacion
Discovery mediante TOKEN
Requiere de Master y Nodes
![Page 35: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/35.jpg)
Docker Swarm
Demo con Docker Machine
![Page 36: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/36.jpg)
Docker SwarmCrear token: $ docker run swarm create
Crear nodo master:
docker-machine create \
-d virtualbox \
--swarm \
--swarm-master \
--swarm-discovery token://<TOKEN> \
swarm-master
![Page 37: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/37.jpg)
Docker SwarmCrear nodo agent-00:
$ docker-machine create \
-d virtualbox \
--swarm \
--swarm-discovery token://<TOKEN> \
swarm-node-00
![Page 38: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/38.jpg)
Docker SwarmCrear nodo agent-00:
$ docker-machine create \
-d virtualbox \
--swarm \
--swarm-discovery token://<TOKEN> \
swarm-node-01
![Page 39: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/39.jpg)
Docker SwarmConectarse a cada nodo:
$ eval "$(docker-machine env swarm-node-00)"
$ eval "$(docker-machine env swarm-node-01)"
Conectarse al master:
$ eval "$(docker-machine env --swarm swarm-master)"
![Page 40: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/40.jpg)
Docker SwarmLanzar en cada nodo:
$ watch docker ps -a
En el master:
$ docker info
$ docker run alpine echo 'hello swarm 1'
$ docker run alpine echo 'hello swarm 2'
$ docker run alpine echo 'hello swarm 3'
![Page 41: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/41.jpg)
Docker Registry
![Page 42: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/42.jpg)
Docker Registry
![Page 43: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/43.jpg)
Docker Registry
docker run -d -p 5000:5000 --restart=always --name registry registry:2
docker pull ubuntu && docker tag ubuntu localhost:5000/ubuntu
docker push localhost:5000/ubuntu
docker pull localhost:5000/ubuntu
![Page 44: Docker Ecosystem: Engine, Compose, Machine, Swarm, Registry](https://reader034.fdocuments.net/reader034/viewer/2022042723/588431a41a28ab39538b583b/html5/thumbnails/44.jpg)
Preguntas?