Tool.Yun
Outils pour les développeurs
Aide-mémoire PowerShell
Aide-mémoire de la commande chmod
Aide-mémoire des commandes Tmux
Aide-mémoire des commandes Zellij
Aide-mémoire des commandes à l'écran
Bash Cheatheet
Docker Cheatheet
Docker Compose Cheatheet
Docker Swarm Cheatheet
Dockerfile Cheatheet
Feuille de triche
Feuille de triche de Markdown
Feuille de triche regex commune
Git Cheatheet
Git sémantique commit trichetheet
JQ TicheSheet
JSONPath Syntax Cheatheet
K8S Cheatheet
Nano Cheatheet
Nginx trichetheet
SED CHRYSHEET
Sélectionneurs CSS
Vim Cheatheet
Xpath syntaxe Cheatheet
Décodeur de code QR
Générateur de code QR
Générateur de code QR WiFi
Générateur de code-barres
Générateur de contacts QR
Lecteur de code-barres
Validateur GTIN
tools.epc-qrcode-generator.name
Base64 Encodeur / décodeur hexagonal
Base64 Encodeur de chaîne / décodeur
CSV aux données
Caractères Unicode à Java Entities Converter
Computer de consommation d'énergie et de dépenses
Convertisseur d'unité de stockage de données
Convertisseur dBm mW
Convertisseur de base entier
Convertisseur de coordonnées géographiques
Convertisseur de fichiers Base64
Convertisseur de format de variables Env
Convertisseur de propriétés
Convertisseur numérique romain
De nombreux convertisseurs d'unités
Excel aux données
Générateur ulide
Normalizer par e-mail
Texte au binaire UTF-8
Texte à Unicode
Torrent à l'aimant
ANSIBLE Vault Crypt Decrypt
Analyseur JWT
Analyseur SAML
Bcrypt
Calculateur CRC
Certificat / analyseur clé
Chiffrement de chaînes Jasypt
Chiffrement de fichiers PGP
Convertisseur de certificat SSL
Cryptage PGP
Cryptage RSA
Crypter / décrypter le texte
Cryptographie d'âge
Encodeur/décodeur Bech32
Générateur HMAC
Générateur JWT
Générateur de RSE
Générateur de certificat x509
Générateur de paires de clés ECDSA
Générateur de paires de clés ED25519
Générateur de paires de clés RSA
Hachage Argon2
Hachage de fichiers
Niceware Octets en phrase de passe
Partage de secrets de Shamir
Paseto / Paserk public / privé
Paseto / paserk local
Pgp keygen
Signataire et vérificateur RSA / DSA / ECDSA
Texte de hachage
Alarme
Alarme Cron / en semaine
Analyseur de fichiers ical
Calculateur ETA
Calculateur TTL
Calculatrice de durée
Calculatrice de durée de date
Calculatrice de jours
Chronomètre
Compte à rebours
Convertisseur de date
Convertisseur de fuseau horaire
Convertisseur de numéros de semaine
Générateur ical
Quel jour ?
fusion ical
Convertisseur de format Docker Compose
Docker Compose vers un fichier .env
Docker Composer to Docker Run Converter
Docker Inspecter à Docker Run
Docker Run to Kubernetes
Docker Run vers des quadroutes
Docker compose aux quadlets
Docker compose à kubernetes
Docker exécuté vers Docker Compose Converter
Générateur RBAC Kubernetes
Générateur d'étiquettes Dockerfile
Trafik Docker compose Maker
Téléchargeur d'images Docker
Validateur Docker Compose
Étiquettes Docker Pangolin
Analyseur de téléphone et formateur
Calculateur SLA
Calculateur d'IMC
Calculateur de rythme de course
Chercheur de codes de pays ISO 3166
Compatibilité des licences logicielles
Convertisseur de calendrier
Convertisseur de devises
Convertisseur en majuscules RMB
Dictionnaire en ligne
Directives d'éclairage IES
Explication des commandes Shell
Recherche ISO 639
Recherche Unicode
VALIDATEUR DE LUHN
VALIDATEUR IBAN et PARSER
VATURE VALIDATEUR
Validateur ISBN et analyseur
Vérificateur de carte de crédit
Générateur d'expressions Cron
Amélioration et minification CSS/JS
Convertisseur de devis
Convertisseur de fichiers hexadécimal
Convertisseur en boucle
Escaper de la chaîne
Générateur GitIgnore
Générateur d'attributs Git
Générateur de chaînes de connexion à la base de données
Générateur de courrier
Générateur de création de bases de données
Générateur de fausses données
Générateur de favori
Générateur de paramètres SQL
Générateur de scripts de test de charge K6
Générateur de secrets Django
Générateur de tables de base de données
Highlighter de code / scripts
Insert JSON à SQL
JSON à Protobuf
JSON à TypeScript
Javascript Unobfuscator / Unpacker
Jolie
Meta Generator ouvrir
Minificateur SQL
Minuterie de pomodoro
Obfuscateur JavaScript
SQL Prettify et Format
Stacktrace plus jolie
Séparateur de fichiers
Testeur API
Testeur Picomatch
Testeur d'échappement ANSI
Testeur d'interface utilisateur de fanfaronnade
Éditeur de commandes CLI
Calculateur d'amortissement
Convertisseur UUID
Générateur UUIDS
Générateur de code OTP
Générateur de code PIN
Générateur de mots de passe Diceware
Générateur de nanoïdes
Générateur de nombres aléatoires
Générateur de numératoires
Générateur de phrase passe
Générateur de phrases passagères BIP39
Générateur de token
Aperçu SVG
Comparateur d'images
Convertisseur Heic
Convertisseur ICO / PNG
Convertisseur de formats d'image
Filigrane
GIF vers MP4
Image EXIF ​​/ Metadata / GPS / JPEG Quality Reader
Image Resizer
Image et PDF OCRIE
Image à SVG (Potrace)
Inverseur de couleur d'image
Magnétophone
Rogner l'image
Supprimer l'arrière-plan de l'image
Supprimer l'exif
Cueilleur de cartes
Flipper de monnaie
Roue de fortune
Rouleau de dés
Analyseur de taille JSON
Aplatisseur JSON / Undeptener
CSV vers JSON
Convertisseur JS à JSON
Convertisseur JSON à JS
Convertisseur JSON à YAML
Convertisseur de chaîne JSON
Entité JSON à Java
Fusion JSON
JSON Diff
JSON Escaper / UNSCAPER
JSON MINIFY
JSON PRUTTIFY ET FORMAT
JSON aux données
JSON pour s'opposer
JSON vers .env
JSON vers MessagePack
JSON à C
JSON à CSV
JSON à PHP Code
JSON à PHP-Array
JSON à Python
JSON à SQL DDL
JSON à Schema
JSON à TOML
JSON à TS
JSON à XML
JSON à aller
Linter JSON
Maître de tri JSON
Message Pack vers JSON
ObjGen vers JSON
PHP-Array à JSON
Requête JSON
Rédacteur en chef JSON
Testeur JQ / JSONPath
tools.json-patch.name
Aide-mémoire de câblage RJ45 Cat6
Analyser de courrier électronique à rebond
Analyseur URL
Analyseur de cookies
Analyseur de rapport DMARC
Analyseur par e-mail
Calculateur de résistance
Chercheur de propriétés LDAP activeIrectory
Console du port série
Convertisseur GZIP / Deflate
Convertisseur brut intelligent
Convertisseur de codage mime
Convertisseur de numéro de point flottant
Convertisseur moyen-endien
Convertisseur objetId MongoDB
Décodeur EMV TLV
Décodeur URL de partage SharePoint
Décodeur de transactions ETH
Détecteur / décodeur de charme de texte
Détecteur de type de fichier
Encodeur / décodeur hexagonal
Extension d'URL courtes
Extracteur d'identification de flocon de neige
Générateur TCPDUmp
Générateur d'URL
Générateur de commandes Nmap
Informations sur le kicode
Lecteur de fichiers parquet
Masque de données sensible
Outlook Safelink Decoder
Parser MSG Outlook
Testeur DNS
Testeur HTTPS
Testeur de pixels morts
Testeur de propagation DNS
键盘测试器
Aperçu Markdown
Coller comme marquage
Différence Markdown
Epub vers Markdown
Générateur de TOC Markdown
Générateur de tableaux Markdown
HTML à Markdown
Markdown Lorem Ipsum
Markdown vers données
Markdown vers texte
Markdown à Docx
Markdown à HTML
Tableau de marque Beautifier
tools.markdown-format-converter.name
Éditeur de Markdown
Calculateur de pourboire
Calculatrice binaire
Convertisseur de formats mathématiques
OCR mathématique
Visualiseur de courbes trigonométriques/équations
Évaluateur mathématique
Calculatrice de distance GEO
Calculatrice du rapport d'aspect
Pourcentage de calculatrice
Référence
Compresseur PDF
Concaner PDF
Crypte PDF
Extracteur de page PDF
Extracteur de texte PDF
HTML vers PDF
PDF décrypter et déverrouiller
Pdf linéarize / fastweb
Vérificateur de signature PDF
Convertisseur d'accélération
Convertisseur d'angle
Convertisseur d'illuminance
Convertisseur d'unités de masse
Convertisseur d'unités de pression
Convertisseur d'unités de zone
Convertisseur d'énergie
Convertisseur d'énergie alimentaire
Convertisseur de débit volumique
Convertisseur de forces
Convertisseur de fréquence
Convertisseur de préfixes SI
Convertisseur de puissance
Convertisseur de température
Convertisseur de vitesse
Convertisseur des unités de longueur
Convertisseur des unités de volume
Ordinateur de fitness
Analyseur de force de mot de passe
Autorisation SIP
Calculateur IPv4 / 6 à CIDR (S)
Calculateur de fiabilité RAID
Calculateur de raid
Calculateur de taux de transfert de données
Calculateur visuel de sous-réseau
Calculatrice IPv4 / 6 CIDR à la plage IP
Calculatrice de ChMOD
Calculatrice de disque dur
Calculatrice de sous-réseau IPv4
Calculatrice de sous-réseau IPv6
Calculatrice de zpool RAID
Convertisseur d'adresse IPv4
Convertisseur d'adresse IPv6
Convertisseur d'adresse MAC
Convertisseur punycode
Curl Generator
Dnsbl
Décodeur ARPA
Décodeur X-VR-Spamcause
Désinfectant Har
Emplacement IP Geo
Entiers vers ipv4 / ipv6
Expanseur de plage IPv4
Force de mot de passe zxcvbn
Formateur Nginx
Formateur de commandes Shell
Générateur Apache Logrotate
Générateur Bimi DNS
Générateur DKIM DNS
Générateur DMARC DNS
Générateur DNS PTR
Générateur DNS SPF
Générateur FSTAB
Générateur HTACCESS
Générateur HTPASSWD / HTACCESS
Générateur IPv6 ULA
Générateur RSYNC
Générateur WPA PSK
Générateur d'adresses MAC
Générateur d'autherines de base
Générateur d'option43
Générateur de commandes UFW
Générateur de commandes d'arrêt
Générateur de configuration de Wireguard
Générateur de crontab
Générateur de ports aléatoires
Générateur iptables
IPv4-6 / iPrange / CIDR dans iPrange / CIDR / IPMask
Les sous-réseaux IP excluent le calculatrice
Linéariseur de commandes Shell
Listeur de sous-réseaux IPv4
Mon adresse IP
Numéros de port
Ping
Recherche d'adresse MAC
Requêtes DNS
Requêtes DNS/RDAP Cloudflare
Testeur WebSocket
Testeur de microphone
Testeur de ports TCP/UDP
Téléchargeur multi-link
Vérificateur Whois
Zpool Cheatheet
générateur de ligne de commande firewalld
tools.restic-command-generator.name
tools.url-redirection-checker.name
Linter TOML
TOML à JSON
TOML à YAML
Calculatrice de Levenshtein
Comparer la police
Convertisseur de cas
Convertisseur de code Morse
Convertisseur de disposition de clavier
Convertisseur de liste
Convertisseur rune
Diagramme de structure de dossiers
Emballer des fichiers pour l'IA
Encodeur / décodeur de jetons GPT
Estimateur de jeton GPT
Exportateur de Mermaid
Extraire du texte de HTML
Finder de lignes en double
Format unicode
Générateur Lorem Ipsum
Générateur de citations
Générateur de commande SED
Générateur de texte ASCII Art
Générateur/Bannière Zalgo
Image à Ascii Art
JSON vers TOON
Lecteur RSVP
Mots distincts
Obfuscateur de cordes
Partager le lien social
Remplaceur de texte intelligent et linebreaker
Répertorie le comparateur
Splitter rapide de l'IA
Statistiques de texte
Sélecteur d'emojis
Sélecteur de lignes aléatoires
TOON vers JSON
Tabulation pour espaces
Testeur Regex
Texte aux noms Unicode
Texte diff
Texte à l'alphabet de l'OTAN
Traducteur texte
Unicode à GSM-7
Vérificateur I et L
Analyseur d'agent utilisateur
CSS Gettificateur
Chaîne de slufier
Codes d'état HTTP
Convertisseur CSS XPATH
Convertisseur REM Pixel
Convertisseur d'unités CSS
Convertisseur de couleurs
Encoder / décoder les chaînes formatées
Fragment de recherche de texte d'URL
Futur d'URL
Générateur URL UTM
Générateur d'espace réservé SVG
Générateur de gradient CSS
HTML GARTIFIER
HTML vers XHTML
HTML vers données
Image à CSS
Informations sur l'appareil
Minficateur HTML
Nettoyant URL
Nettoyer HTML
Roue de couleur
Types de mime
Vérificateur de contraste de couleur
Échapper aux entités HTML
Éditeur HTML WYSIWYG
Formateur XML
Linter XML
ObjGen vers HTML
Testeur XSLT
Testeur xpath
XML à JSON
Apllareur YAML / Undeptener
Fusion de Yaml
YAML à JSON Converter
YAML à TOML
Yaml Prettify and Format

Docker Swarm Cheatheet

Docker Swarm Mode Cheatheet

Docker Swarm mode is Docker’s native clustering and orchestration solution. It turns a group of Docker hosts into a single virtual system with high availability, load balancing and a declarative deployment model — using the CLI you already know.

  • Built-in orchestration with a declarative service model
  • Rolling updates and one-command rollback
  • Self-healing: failed replicas are rescheduled automatically
  • Secure node-to-node communication over mutual TLS, rotated automatically
  • Secrets and configs distributed straight from the cluster store

ℹ️ Swarm does not auto-scale on load. Replica counts are set manually with --replicas or docker service scale.

🧱 Concepts

TermWhat it is
NodeA Docker engine that joined the swarm — a manager or a worker
ManagerKeeps cluster state via Raft, schedules tasks, serves the API
WorkerRuns tasks only; has no view of the cluster state
ServiceThe declaration of what should run (image, replicas, ports, …)
TaskOne container slot of a service, scheduled onto a node
StackA group of services deployed together from a Compose file

📌 Swarm Initialization

# initialize a swarm; this node becomes the first manager
docker swarm init

# pick the interface to advertise on multi-homed hosts
docker swarm init --advertise-addr <manager-ip>

# address pool for the overlay networks
docker swarm init --default-addr-pool 10.20.0.0/16

# print the command a worker needs to join
docker swarm join-token worker

# print the command a manager needs to join
docker swarm join-token manager

# run on the joining node
docker swarm join --token <token> <manager-ip>:2377

# rotate a token, invalidating the old one
docker swarm join-token --rotate worker

# leave the swarm (on a worker)
docker swarm leave

# leave on a manager, or on the last node
docker swarm leave --force

# keep fewer terminated tasks per service
docker swarm update --task-history-limit 5

# lifetime of the node certificates
docker swarm update --cert-expiry 720h

# rotate the swarm certificate authority
docker swarm ca --rotate

🔌 Ports that must be open between nodes

PortProtocolUsed for
2377TCPCluster management (managers only)
7946TCP + UDPNode discovery and gossip
4789UDPOverlay network data plane (VXLAN)
IP protocol 50 (ESP)—Only with encrypted overlay networks

👥 Node Management

# list the nodes of the swarm
docker node ls

# filter by role, id, name, label, membership
docker node ls --filter role=manager

# readable summary of one node
docker node inspect <node> --pretty

# a single field via a Go template
docker node inspect -f '{{.Status.State}}' <node>

# worker  → manager
docker node promote <node>

# manager → worker
docker node demote <node>

# move tasks off and stop scheduling new ones
docker node update --availability drain <node>

# keep running tasks, schedule nothing new
docker node update --availability pause <node>

# bring a drained or paused node back
docker node update --availability active <node>

# label a node for placement constraints
docker node update --label-add env=production <node>

# remove a label again
docker node update --label-rm env <node>

# tasks running on a node
docker node ps <node>

# remove a node that already left
docker node rm <node>

# remove an unreachable node
docker node rm --force <node>

💡 Drain a node before maintenance (--availability drain), then set it back to active. Swarm reschedules the tasks for you.

🧠 Manager Nodes & Raft

Managers orchestrate tasks, maintain the cluster state through Raft consensus and serve the API. Several managers give you high availability, but only one is the leader at a time.

⚠️ Use an odd number of managers (3, 5 or 7). Raft tolerates (N-1)/2 failures — 3 managers survive 1 loss, 5 survive 2. Beyond 7 the consensus overhead outweighs the benefit.

# swarm and Raft state of the local node
docker info

# details of the current node, manager status included
docker node inspect self --pretty

# encrypt the Raft logs at rest
docker swarm update --autolock=true

# unlock a manager after a restart
docker swarm unlock

# show the current unlock key
docker swarm unlock-key

# rotate it
docker swarm unlock-key --rotate

📦 Service Management

# create a service
docker service create --name <service> <image>

# create a service with a fixed replica count
docker service create --name <service> --replicas <n> <image>

# create a global service: one task on every node
docker service create --name <service> --mode global <image>

# list services
docker service ls

# filter the list
docker service ls --filter name=<service>

# readable service definition
docker service inspect <service> --pretty

# tasks and the nodes they run on
docker service ps <service>

# change the replica count
docker service scale <service>=<n>

# scale several services at once
docker service scale <svc-a>=3 <svc-b>=5

# roll out a new image
docker service update --image <new-image> <service>

# redistribute tasks without changing anything
docker service update --force <service>

# go back to the previous definition
docker service rollback <service>

# follow the logs of every task
docker service logs -f <service>

# recent output only
docker service logs --tail 100 --since 10m <service>

# remove a service
docker service rm <service>

Changing a running service

# add or replace an environment variable
docker service update --env-add KEY=value <service>

# remove one
docker service update --env-rm KEY <service>

# publish another port
docker service update --publish-add 8080:80 <service>

# stop publishing it
docker service update --publish-rm 8080 <service>

# attach a volume
docker service update --mount-add type=volume,src=data,dst=/data <service>

# detach it again, by target path
docker service update --mount-rm /data <service>

# add a placement constraint
docker service update --constraint-add 'node.labels.env==prod' <service>

# at most one task per node
docker service update --replicas-max-per-node 1 <service>

# change the resource limits
docker service update --limit-memory 512m --reserve-memory 256m <service>

🔁 Replicas & Modes

Replicas define how many instances of a service run across the swarm. Swarm spreads them over the available nodes and reschedules them when a task or a node fails.

ModeFlagBehaviour
Replicated--mode replicated (default)Run exactly --replicas tasks, anywhere they fit
Global--mode globalExactly one task per eligible node
Replicated job--mode replicated-jobRun --replicas tasks to completion
Global job--mode global-jobRun one task to completion on every node
# five tasks
docker service create --replicas 5 --name myapp myimage

# scale the same service up to ten
docker service scale myapp=10

# one per node
docker service create --mode global --name agent myimage

# batch job: 20 tasks in total, 4 running at a time
docker service create --mode replicated-job --replicas 20 \
  --max-concurrent 4 --name migrate myimage

🐝 Tasks & Containers

A task is a single container slot managed by Swarm; it maps to one container on one node and is never moved — a failed task is replaced by a new one.

# tasks of a service, with their node
docker service ps <service>

# full error messages — start debugging here
docker service ps --no-trunc <service>

# hide the terminated tasks
docker service ps -f "desired-state=running" <service>

# tasks on one node
docker node ps <node>

# containers on the current node
docker container ls

# low-level details of one container
docker container inspect <container-id>
Task stateMeaning
NEW / PENDINGAccepted, waiting for a node that satisfies the constraints
ASSIGNED / PREPARINGSent to a node, image being pulled
STARTING / RUNNINGThe container is starting or up
COMPLETEA job task finished successfully
FAILEDThe container exited with an error
SHUTDOWNStopped on purpose (update, drain, scale down)
REJECTEDThe node refused the task (missing image, bad mount)
ORPHANEDThe node has been unreachable too long

🎯 Placement

docker service create --constraint 'node.role==worker' --name web nginx

docker service create --constraint 'node.labels.env==production' --name api myimage

docker service create --placement-pref 'spread=node.labels.zone' --name web nginx

docker service create --replicas-max-per-node 1 --name web nginx
ExpressionMatches
node.rolemanager or worker
node.hostnameThe node’s hostname
node.idThe node’s ID
node.labels.<key>A label set with docker node update --label-add
engine.labels.<key>A label set in the engine’s daemon.json
node.platform.os / node.platform.archlinux, windows / amd64, arm64

🌐 Networking

An overlay network is a virtual network spanning multiple Docker hosts. Containers on different nodes talk as if they were on the same L2 segment, with DNS-based service discovery built in.

# create an overlay network
docker network create --driver overlay <network>

# encrypt the data plane too
docker network create --driver overlay --opt encrypted <network>

# let standalone containers join
docker network create --driver overlay --attachable <network>

# list networks
docker network ls

# attached services and containers
docker network inspect <network>

# attach at creation time
docker service create --name <service> --network <network> <image>

# attach an existing service
docker service update --network-add <network> <service>

# detach it again
docker service update --network-rm <network> <service>

Publishing ports

# routing mesh (ingress)
docker service create --publish 8080:80 --name web nginx

# host port, no mesh
docker service create --publish mode=host,target=80,published=8080 --name web nginx
ModeBehaviour
ingress (default)Every node accepts the port and load-balances to the tasks
hostThe port is published only on nodes running a task — no mesh, no extra hop

🔄 Rolling Updates & Rollback

docker service create \
  --name web \
  --replicas 5 \
  --update-parallelism 2 \
  --update-delay 10s \
  --update-failure-action rollback \
  --update-monitor 30s \
  nginx:1.25

# trigger the rolling update
docker service update --image nginx:1.26 web

# return to the previous definition
docker service rollback web
FlagDescription
--update-parallelismHow many tasks are updated at once (0 = all)
--update-delayPause between batches
--update-failure-actionpause (default), continue or rollback
--update-monitorHow long a task is watched before it counts as healthy
--update-orderstop-first (default) or start-first
--rollback-parallelismSame knobs for the rollback path (--rollback-delay, --rollback-monitor, --rollback-failure-action, --rollback-order)

🩺 Health Checks

Swarm reschedules a task as soon as its health check fails, so an update never marks a broken image as healthy.

docker service create \
  --name api \
  --health-cmd 'curl -f http://localhost:8080/health || exit 1' \
  --health-interval 10s \
  --health-timeout 3s \
  --health-retries 3 \
  --health-start-period 30s \
  myimage

🔐 Secrets

Secrets are encrypted in the Raft log and mounted into the container as in-memory files under /run/secrets/.

# create from a file
docker secret create db_password ./db_password.txt

# create from stdin
echo "s3cr3t" | docker secret create db_password -

# list secrets
docker secret ls

# metadata only — never the value
docker secret inspect db_password

# attach a secret; it appears at /run/secrets/db_password
docker service create --name db --secret db_password postgres:16

# ...or mount it at a custom path with a fixed mode
docker service create --name db \
  --secret source=db_password,target=/run/secrets/pg_pw,mode=0400 postgres:16

# only possible when no service uses it
docker secret rm db_password

Rotating a secret — create the new one, swap it, then drop the old one:

echo "n3w-s3cr3t" | docker secret create db_password_v2 -

docker service update \
  --secret-rm db_password \
  --secret-add source=db_password_v2,target=db_password \
  db

docker secret rm db_password

🔑 Configs

Configs work like secrets but are not encrypted at rest — use them for non-sensitive files such as nginx.conf.

# create a config
docker config create my_nginx_conf ./nginx.conf

# list configs
docker config ls

# metadata and the stored content
docker config inspect my_nginx_conf

# mount a config at a specific path
docker service create \
  --name web \
  --config source=my_nginx_conf,target=/etc/nginx/nginx.conf \
  nginx

# swap in a new version of the config
docker service update \
  --config-rm my_nginx_conf \
  --config-add source=my_nginx_conf_v2,target=/etc/nginx/nginx.conf \
  web

# only when no service uses it
docker config rm my_nginx_conf

📚 Stacks

A stack is a group of related services deployed together from a Compose file — the standard production workflow for Swarm.

# deploy or update a stack
docker stack deploy -c stack.yaml mystack

# pass your registry credentials along
docker stack deploy -c stack.yaml --with-registry-auth mystack

# remove services no longer in the file
docker stack deploy -c stack.yaml --prune mystack

# list stacks
docker stack ls

# services of a stack
docker stack services mystack

# tasks of a stack
docker stack ps mystack

# tasks of a stack, with full error messages
docker stack ps --no-trunc mystack

# print the merged, resolved file
docker stack config -c stack.yaml

# remove the whole stack
docker stack rm mystack

Stacks honour the deploy: block of the Compose file (replicas, placement, resources, restart policy, update config). build:, top-level restart: and depends_on: are ignored.

🧯 Troubleshooting

# the error column tells you why a task died
docker service ps --no-trunc <service>

# application output of every task
docker service logs --tail 200 <service>

# is a node Down or Unreachable?
docker node ls

# what was actually deployed
docker service inspect --pretty <service>

# live stream of orchestration events
docker events --filter type=service
SymptomUsual cause
Task stuck in PENDINGNo node satisfies the constraints, ports, or resource reservations
no suitable nodePlacement constraint or --replicas-max-per-node cannot be met
Task loops FAILED → STARTINGThe container exits immediately — read docker service logs
REJECTED with an image errorThe image is missing on that node; use --with-registry-auth for private registries
Service unreachable from other nodesPorts 7946/4789 blocked, or the services are not on the same overlay network

🛠 Common Flags Reference

docker service create / docker service update

FlagDescription
--replicasNumber of tasks for a replicated service
--modereplicated (default), global, replicated-job, global-job
--publishPort mapping (<published>:<target>, or mode=host,...)
--mountAttach a volume or bind mount
--networkAttach to an overlay network
--constraintPlacement rule, e.g. node.role==worker
--placement-prefSpread tasks, e.g. spread=node.labels.zone
--replicas-max-per-nodeCap the tasks of this service per node
--limit-cpu / --limit-memoryHard resource limits
--reserve-cpu / --reserve-memoryResources reserved for scheduling
--secret / --configAttach a secret or a config
--env / --env-fileEnvironment variables
--restart-conditionnone, on-failure or any (default)
--health-cmd and friendsOverride the image health check
--with-registry-authForward registry credentials to the nodes

📄 Example: Production-style Web Service

docker service create \
  --name web \
  --replicas 3 \
  --publish 80:80 \
  --network webnet \
  --constraint 'node.role==worker' \
  --constraint 'node.labels.env==production' \
  --placement-pref 'spread=node.labels.zone' \
  --update-parallelism 1 \
  --update-delay 10s \
  --update-failure-action rollback \
  --update-order start-first \
  --limit-memory 512m \
  --reserve-memory 256m \
  --restart-condition any \
  nginx:1.25

📚 Resources

  • Swarm mode overview
  • Swarm services
  • Manage secrets
  • Manage configs
  • Stack file reference (Compose Spec deploy:)
  • docker service create CLI reference