DevOps Sesión 5 (2022-02-23) Swarm
Documentación relacionada
1-Despliegue de Aplicaciones Docker/
Clase
./2-Docker Swarm.pdf pag 17
- modo replicado
- para no usar modo malla por defecto (solo abre puerto en el lugar (nodo) que se coloca), especificar mode=host en published
docker service create --replicas 1 --name web4 --publish published=8580,target=80,mode=host dockercloud/hello-world
- modo global
- se crea un servicio en cada nodo
- no permite escalar, ni permite
--replicas
docker service create --mode global --name servicio4 --limit-memory 128MB --publish 8083:80 httpd
nodos
docker node …
demote
: degrada un manager a workerpromote
: promueve un worker a managerinspect
: información detalladals
: listado de nodosps
: serviciosrm
: eliminar nodo (docker swarm leave
para salir del SWARM)update
: actualizar el estado del nodo--availability active
: modo normal de trabajo--availability drain
: deja de recibir tareas, va vaciando las que tiene--availability pause
: deja de recibir nuevas tareas, mantiene las actuales--label-add
: añade etiqueta key=value--label-remove
--role
: worker/manager
docker swarm join-token worker
- pag 20
etiquetar nodo
- relacionado con constrains
node.role
node.hostname
node.platform.os
- se pueden crear etiquetas sobre los nodos para aplicar constrains
docker nodes update --label-add etiqueta=valor
docker service create --name servicio –constraint 'node.labels.etiqueta==valor
docker service create --name servicio –constraint 'node.labels.etiqueta!=valor
stacks
./Ficheros Laboratorio Stack de servicios swarm/stack-wordpress-swarm
- problema de almacenamiento (volúmenes)
-
curl -L https://downloads.portainer.io/portainer-agent-stack.yml -o portainer-agent-stack.yml
- networks → attachable: permite que contenedores lanzados fuera del SWARM se puedan añadir a esa red
docker stack deploy -c portainer-agent-stack.yml portainer
docker stack ls
docker stack ps portainer
docker service ls
rolling
cluster
- primera máquina es Master/Worker a la vez
- otros nodos se pueden unir como Master o Worker
- otros nodos Master no tienen rol worker (no ejecutan contenedores) ← FALSE
- todos tienen rol Master/Worker, aunque se recomienda que los master solo hagan de master (haciendo un
docker node update --availability drain
)
- mejor 1 Master + 2 Workers que 3 Master/Worker
secret
docker secret…
- create
- inspect
- ls
- rm
- las imágenes han de estar preparadas para usar swarm secrets
- se añade _FILE a las variables de entorno «reales»
- crea un fichero con la contraseña en plano en /run/secrets/<secreto>
- definir los secrets en el servicio y en un apartado específico:
version: '3.1' services: db: image: postgres restart: always environment: POSTGRES_USER_FILE: /run/secrets/pg_user POSTGRES_PASSWORD_FILE: /run/secrets/pg_password POSTGRES_DB_FILE: /run/secrets/pg_database secrets: - pg_password - pg_user - pg_database adminer: image: adminer ports: - 8680:8080 secrets: pg_user: external: true pg_password: external: true pg_database: external: true
echo «11111111» | docker secret pg_password -
docker secret inspect pg_password
Extras
docker system
- eliminar contenedores intermedios:
- en cron, docker prune
- https://docs.docker.com/config/pruning/ →
docker container prune --filter «until=24h»