Docker Swarm en Docker-in-Docker (DinD)

Guia per muntar un clúster Swarm local amb Docker in Docker (DinD), provar routing mesh, equilibri de càrrega i desplegaments multi-node amb nginx i docker-compose; recomanacions de Q2BSTUDIO.

sábado, 16 de agosto de 2025 • 5 min de lectura • Equip Q2BSTUDIO

Intel·ligència-Artificial-

Introducció a Docker Swarm i Docker in Docker DinD: Docker Swarm és la solució nativa de Docker per a orquestació i clustering, ideal per desplegar i escalar aplicacions en contenidors sobre diversos hosts. En aquest article expliquem com reproduir un clúster Swarm de diversos nodes localment usant Docker in Docker DinD, per provar la malla d'encaminament ingress, la replicació de serveis i l'equilibri de càrrega, i com això s'integra en projectes de programari a mida i aplicacions a mida que desenvolupa Q2BSTUDIO.

Requisits previs: coneixement bàsic de contenidors Docker, familiaritat amb docker run, docker build i docker-compose, i nocions sobre gestió d'imatges, volums i xarxes. Aquests conceptes són claus per oferir solucions de programari a mida i serveis cloud aws i azure dins d'una estratègia d'intel·ligència artificial i ciberseguretat.

Quin problema resolem: en executar un servei amb diverses rèpliques a Docker Swarm i accedir des de localhost normalment el trànsit acaba en una sola rèplica per com el routing mesh funciona a nivell de node. Això pot confondre en provar l'equilibri de càrrega. Per validar que la malla distribueix correctament entre nodes diferents es recomana crear un petit clúster Swarm amb dos nodes DinD a la mateixa màquina.

Passos resumits per crear l'entorn DinD: crear una xarxa Docker per als contenidors DinD, arrencar dos contenidors docker:dind com a node1 i node2, inicialitzar Swarm a node1 amb docker swarm init i un advertise address, obtenir el token de join i unir node2 amb docker swarm join. Cada contenidor DinD executa el seu propi dimoni Docker aïllat, cosa que permet simular diversos hosts sense necessitat de VMs addicionals.

Comandes útils, executar a l'host: docker network create --driver bridge dind-net, docker run --privileged -d -p 8080:8080 --name node1 --hostname node1 --network dind-net docker:dind, docker run -d --privileged --name node2 --hostname node2 --network dind-net docker:dind. Connectar-se a node1: docker exec -it node1 sh, dins: docker swarm init --advertise-addr 172.23.0.2:2377. A node2: docker exec -it node2 sh i després usar docker swarm join amb el token indicat per node1.

Compartir imatges entre host i DinD: exportar imatges des de l'host amb docker save imatge -o arxiu.tar, copiar al contenidor amb docker cp arxiu.tar node1:/arxiu.tar, dins del contenidor carregar-la amb docker load -i /arxiu.tar. Repetir per a node2. Això permet desplegar imatges privades al clúster DinD sense necessitat d'un registry públic.

Exemple de docker-compose per desplegar a Swarm, usar xarxes overlay i mode ingress per al port publicat: version: 3.8 services: demo-app: image: docker-demo:latest deploy: replicas: 2 restart_policy: condition: on-failure networks: - app-network nginx: image: nginx:latest ports: - target: 80 published: 8080 protocol: tcp mode: ingress volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro depends_on: - demo-app networks: - app-network networks: app-network: driver: overlay. Aquest format evita que el port publicat quedi restringit a un únic node i permet que el routing mesh exposi el servei a tots els nodes.

Configurar nginx com a proxy invers simple: upstream demo_app server demo-app:8080; a la secció server configurar location / proxy_pass https://demo_app; i reenviar capçaleres Host, X-Real-IP, X-Forwarded-For i X-Forwarded-Proto. Això ajuda a instrumentar logs i a comprovar des de quina rèplica arriba cada petició quan la malla funciona correctament.

Verificació i diagnòstic: usar docker info | grep -i swarm per comprovar el mode swarm, docker node ls per llistar nodes, docker stack deploy -c docker-compose.yml demo-app per desplegar la pila, docker stack ls per veure stacks, docker stack services demo-app per veure serveis, docker stack ps demo-app per llistar tasques. Si totes les rèpliques acaben en un mateix node revisar la configuració de la xarxa i el mode de publicació del port.

Per què passa que tot el trànsit arribi a una rèplica: quan s'accedeix per localhost l'encaminament quedarà a nivell de node i l'equilibri IPVS pot preferir una sola tasca local. Amb un clúster multi node real o amb DinD i xarxes overlay correctament configurades, el mode ingress i la malla d'encaminament distribueixen les connexions entre nodes i rèpliques.

Limitacions de DinD: DinD és una excel·lent eina per a proves i desenvolupament, però no reprodueix al 100 per cent la complexitat d'un clúster multinode real en producció, especialment en aspectes de xarxa, rendiment i aïllament. Per a desplegaments en producció es recomanen entorns reals en cloud aws i azure o clústers gestionats.

Neteja de l'entorn: docker stack rm demo-app per eliminar la pila, docker stop $(docker ps -q) per aturar contenidors, docker rm $(docker ps -aq) per eliminar contenidors, docker network rm dind-net per treure la xarxa DinD. Sempre verificar abans d'executar comandes massives en entorns amb dades valuoses.

Aplicacions empresarials i casos d'ús: aquest flux serveix per validar desplegaments d'aplicacions a mida i programari a mida que requereixen equilibri i alta disponibilitat. A Q2BSTUDIO usem metodologies similars per testejar microserveis, pipelines de CI/CD i desplegaments segurs que incorporen pràctiques de ciberseguretat i compliment.

Serveis i competències de Q2BSTUDIO: som una empresa de desenvolupament de programari especialitzada en aplicacions a mida, programari a mida i intel·ligència artificial aplicada a negocis. Oferim serveis cloud aws i azure, serveis intel·ligència de negoci, solucions de power bi, agents IA i projectes d'ia per a empreses. També brindem consultoria en ciberseguretat per protegir desplegaments i garantir continuïtat operativa.

Per què triar Q2BSTUDIO: combinem experiència en desenvolupament d'aplicacions a mida amb capacitats en intel·ligència artificial i ciberseguretat, integrant serveis cloud aws i azure i eines d'anàlisi com power bi per oferir solucions end to end. Podem ajudar a dissenyar arquitectures Docker Swarm o Kubernetes, optimitzar pipelines i aplicar agents IA per automatització i millora de processos.

Resum i recomanació: Docker Swarm és una opció simple i nativa per orquestació en projectes petits i mitjans. Per a proves locals de routing mesh i equilibri entre rèpliques usar DinD és pràctic i reproduïble. Per a projectes de major escala o requisits empresarials complexos, considerar Kubernetes o clústers gestionats en cloud aws i azure. Si necessites ajuda implementant aquestes solucions o desenvolupant programari a mida amb intel·ligència artificial i ciberseguretat, contacta amb Q2BSTUDIO per a una consultoria especialitzada.

ELS NOSTRES SERVEIS

Com et podem ajudar

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.