Tool.Yun
Χρήσιμα εργαλεία για προγραμματιστές
CSV σε JSON από αρχεία CSV σε JSON
JSON Flattener/Unflattener
JSON Linter
JSON για να αντιταχθεί
JSON για χρήση
JSON ελαχιστοποίηση
JSON σε .env
JSON σε C#
JSON σε CSV
JSON σε MessagePack
JSON σε TOML
JSON σε TS
JSON σε XML
JSON σε δεδομένα
JSON σε οντότητα Java
Json Escaper/Unescaper
Json σε PHP-Array
Json σε Python
Json σε SQL DDL
Json σε Σχήμα
ObjGen σε JSON
PHP-Array σε JSON
tools.json-patch.name
Αναλυτής μεγέθους Json
Διαφορά JSON
Δοκιμαστής Jq/JSONPath
Επεξεργαστής JSON
Ερώτημα Json
Κύριος ταξινόμηση JSON
Κώδικας Json σε PHP
Μετατροπέας JS σε JSON
Μετατροπέας JSON σε JS
Μετατροπέας JSON σε YAML
Μετατροπέας συμβολοσειρών Json
Ομορφοποίηση και μορφοποίηση JSON
Πακέτο μηνυμάτων σε JSON
Συγχώνευση JSON
HTML σε PDF
Έλεγχος υπογραφών PDF
Αποκρυπτογράφηση και ξεκλείδωμα PDF
Γραμμικοποίηση PDF/FastWeb
Εξαγωγέας κειμένου PDF
Εξαγωγέας σελίδων PDF
Κρυπτογράφηση PDF
Συμπιεστής PDF
Συνδετήρας PDF
ObjGen σε HTML
XML Linter
XML σε JSON
Δοκιμαστής XSLT
Ελεγκτής XPath
Μορφοποιητής XML
YAML Flattener/Unflattener
YAML σε TOML
Μετατροπέας YAML σε JSON
Ομορφοποίηση και μορφοποίηση YAML
Συγχώνευση YAML
Εργαλείο δημιουργίας εκφράσεων Cron
CSS/JS Prettify & Minify
Json προς Protobuf
Json σε Typescript
SQL Minifier
Stacktrace πιο όμορφο
Άνοιγμα γεννήτριας μεταδεδομένων γραφημάτων
Αποκρυπτογράφος Javascript
Αποσυμπιεστής/Αποσυσκευαστής Javascript
Γεννήτρια Favicon
Γεννήτρια GitIgnore
Γεννήτρια αλληλογραφίας
Γεννήτρια μυστικών Django
Γεννήτρια παραμέτρων SQL
Γεννήτρια πινάκων βάσης δεδομένων
Γεννήτρια σεναρίων δοκιμής φόρτωσης K6
Γεννήτρια χαρακτηριστικών Gitat
Δημιουργός δημιουργίας βάσεων δεδομένων
Διαφυγέας χορδών
Διαχωριστής αρχείων
Δοκιμές API
Δοκιμαστής Picomatch
Δοκιμαστής UI Swagger
Δοκιμαστής διαφυγής ANSI
Εισαγωγή από Json σε SQL
Επεξεργαστής εντολών Cli
Επισήμανση κώδικα/σεναρίων
Εργαλείο δημιουργίας συμβολοσειρών σύνδεσης βάσης δεδομένων
Μετατροπέας Προσφορών
Μετατροπέας αρχείων HEX
Μετατροπέας μπούκλας
Ομορφοποίηση και μορφοποίηση SQL
Παραποιητής Δεδομένων
Προγραμματιστής Javascript
Χρονοδιακόπτης Pomodoro
Γεννήτρια NanoIDs
Γεννήτρια UUID
Γεννήτρια Ταχυδρομικού Κώδικα
Γεννήτρια αριθμητικών ονομάτων
Γεννήτρια διακριτικών
Γεννήτρια κωδικών OTP
Γεννήτρια κωδικών πρόσβασης
Γεννήτρια κωδικών πρόσβασης BIP39
Γεννήτρια κωδικών πρόσβασης Diceware
Γεννήτρια τυχαίων αριθμών
Μετατροπέας UUID
tools.epc-qrcode-generator.name
Αναγνώστης γραμμωτού κώδικα
Αποκωδικοποιητής κωδικών QR
Γεννήτρια γραμμωτού κώδικα
Γεννήτρια κωδικών QR
Γεννήτρια κωδικών QR WiFi
Γεννήτρια πληροφοριών επικοινωνίας QR
Επικυρωτής GTIN
IPv4-6/IPRange/CIDR σε IPRange/CIDR/IPMask
tools.restic-command-generator.name
tools.url-redirection-checker.name
Έλεγχος DNSBL
Έλεγχος Whois
Ακέραιοι αριθμοί σε IPv4/IPv6
Αναζήτηση διεύθυνσης MAC
Αναλυτής ισχύος κωδικού πρόσβασης
Αποκωδικοποιητής ARPA
Αποκωδικοποιητής X-VR-SpamCause
Απολυμαντικό HAS
Αριθμοί θυρών
Αριθμομηχανή Chmod
Αριθμομηχανή σκληρού δίσκου
Βασική γεννήτρια εξουσιοδότησης
Γεννήτρια Apache LogRotate
Γεννήτρια Crontab
Γεννήτρια DNS BIMI
Γεννήτρια DNS DKIM
Γεννήτρια DNS DMARC
Γεννήτρια DNS PTR
Γεννήτρια FStab
Γεννήτρια HTAccess
Γεννήτρια Htpasswd/htaccess
Γεννήτρια IPv6 ULA
Γεννήτρια Iptables
Γεννήτρια Option43
Γεννήτρια Rsync
Γεννήτρια SPF DNS
Γεννήτρια WPA PSK
Γεννήτρια διευθύνσεων MAC
Γεννήτρια εντολών Curl
Γεννήτρια εντολών UFW
Γεννήτρια εντολών τερματισμού λειτουργίας
Γεννήτρια ρυθμίσεων Wireguard
Γεννήτρια τυχαίων θυρών
Γεωγραφική τοποθεσία IP
Γραμμικοποιητής εντολών κελύφους
Δοκιμή Websocket
Δοκιμαστής θύρας TCP/UDP
Δοκιμαστής μικροφώνου
Εξουσιοδότηση SIP
Επεκτατήρας εύρους IPv4
Ερωτήματα DNS
Ερωτήματα DNS/RDAP του Cloudflare
Η διεύθυνση IP μου
Ισχύς κωδικού πρόσβασης Zxcvbn
Λήψη πολλαπλών συνδέσμων
Λίστα υποδικτύων IPv4
Μετατροπέας Punycode
Μετατροπέας διευθύνσεων IPv4
Μετατροπέας διευθύνσεων IPv6
Μετατροπέας διευθύνσεων MAC
Μορφοποιητής Nginx
Μορφοποιητής εντολών κελύφους
Πινγκ
Υπολογιστής RAID
Υπολογιστής ZPOOL RAID
Υπολογιστής αξιοπιστίας RAID
Υπολογιστής εξαίρεσης υποδικτύων IP
Υπολογιστής εύρους IPv4/6 CIDR σε IP
Υπολογιστής εύρους IPv4/6 έως CIDR(s)
Υπολογιστής οπτικού υποδικτύου
Υπολογιστής ρυθμού μεταφοράς δεδομένων
Υπολογιστής υποδικτύου IPv4
Υπολογιστής υποδικτύου IPv6
Φύλλο οδηγιών χρήσης ZPool
γεννήτρια γραμμής εντολών firewalld
Έλεγχος πιστωτικών καρτών
Αναζήτηση ISO 639
Αναζήτηση Unicode
Αναζήτηση κωδικών χωρών ISO 3166
Αναλυτής και μορφοποιητής τηλεφώνου
Εξηγήστε την εντολή Shell
Επικυρωτής Luhn
Επικυρωτής Αριθμών ΦΠΑ
Επικυρωτής και αναλυτής IBAN
Επικυρωτής και αναλυτής ISBN
Ηλεκτρονικό Λεξικό
Μετατροπέας Κεφαλαίων RMB
Μετατροπέας ημερολογίου
Μετατροπέας νομισμάτων
Οδηγίες φωτισμού IES
Συμβατότητα με άδειες χρήσης λογισμικού
Υπολογιστής SLA
Υπολογιστής ΔΜΣ
Υπολογιστής Ρυθμού Τρεξίματος
Αναζήτηση ιδιοτήτων ActiveDirectory LDAP
Αναλυτής Cookies
Αναλυτής MSG του Outlook
Αναλυτής URL
Αναλυτής αναπήδησης email
Αναλυτής αναφορών DMARC
Αναλυτής ηλεκτρονικού ταχυδρομείου
Ανιχνευτής τύπου αρχείου
Ανιχνευτής/Αποκωδικοποιητής συνόλου χαρακτήρων κειμένου
Αποκρυπτογράφος ευαίσθητων δεδομένων
Αποκωδικοποιητής EMV TLV
Αποκωδικοποιητής Safelink του Outlook
Αποκωδικοποιητής URL κοινής χρήσης SharePoint
Αποκωδικοποιητής συναλλαγών ETH
Αρχεία παρκέ Reader
Γεννήτρια TCPDump
Δεκαεξαδικός κωδικοποιητής/αποκωδικοποιητής
Δημιουργός URL
Δημιουργός εντολών Nmap
Δοκιμαστής DNS
Δοκιμαστής HTTPS
Δοκιμαστής διάδοσης DNS
Δοκιμαστής νεκρών εικονοστοιχείων
Εξολκέας ταυτότητας Snowflake
Επεκτατήρας σύντομων URL
Κονσόλα σειριακής θύρας
Μετατροπέας GZip/Deflate
Μετατροπέας Middle-End
Μετατροπέας ObjectId MongoDB
Μετατροπέας SMART Raw
Μετατροπέας αριθμών κινητής υποδιαστολής
Μετατροπέας κωδικοποίησης MIME
Πληροφορίες κωδικού πρόσβασης
Υπολογιστής αντίστασης
Φυλλάδιο με οδηγίες για την καλωδίωση RJ45 Cat6
键盘测试器
GIF σε MP4
OCR εικόνας και PDF
Αλλαγή μεγέθους εικόνας
Αναγνώστης εικόνας EXIF/Μεταδεδομένα/GPS/JPEG ποιότητας
Αφαίρεση EXIF
Αφαίρεση φόντου εικόνας
Εικόνα σε SVG (προβολή εικόνας)
Κάμερα εγγραφής
Μετατροπέας HEIC
Μετατροπέας ICO/PNG
Μετατροπέας μορφών εικόνας
Μετατροπέας χρώματος εικόνας
Περικοπή εικόνας
Προεπισκόπηση SVG
Σύγκριση εικόνων
Υδατόσημο
Αναλυτής αρχείων ICAL
Αντίστροφη μέτρηση
Γεννήτρια ICAL
Μετατροπέας αριθμών εβδομάδων
Μετατροπέας ζώνης ώρας
Μετατροπέας ημερομηνίας-ώρας
Ξυπνητήρι ώρας
Ποια μέρα;
Συγχώνευση iCal
Συναγερμός Cron/Εβδομαδιαίας Ημέρας
Υπολογιστής ETA
Υπολογιστής TTL
Υπολογιστής Διάρκειας
Υπολογιστής Ημερομηνίας+Διάρκειας
Υπολογιστής ημερών
Χρονόμετρο
HTML Prettifier
HTML ελαχιστοποιητής
HTML σε XHTML
HTML σε δεδομένα
Έλεγχος αντίθεσης χρωμάτων
Αναλυτής παράγοντα χρήστη
Βελτιωτής CSS
Γεννήτρια URL UTM
Γεννήτρια placeholder SVG
Γεννήτρια διαβάθμισης CSS
Δημιουργός τμημάτων αναζήτησης κειμένου URL
Εικόνα σε CSS
Επεξεργαστής HTML WYSIWYG
Καθαριστικό HTML
Καθαριστικό URL
Καταγραφή URL
Κωδικοί κατάστασης HTTP
Κωδικοποίηση/αποκωδικοποίηση συμβολοσειρών με μορφοποίηση URL
Μετατροπέας CSS XPath
Μετατροπέας εικονοστοιχείων REM
Μετατροπέας μονάδων CSS
Μετατροπέας χρωμάτων
Οντότητες HTML διαφυγής
Πληροφορίες συσκευής
Συμβολοσειρά Slugify
Τροχός Χρωμάτων
Τύποι MIME
I και L Checker
JSON σε TOON
TOON σε JSON
Tab σε κενά διαστήματα
Unicode σε GSM-7
Έξυπνη αντικατάσταση κειμένου και αλλαγή γραμμής
Αναγνώστης RSVP
Αποκρυπτογράφος συμβολοσειρών
Γεια σου, γεννήτρια.
Γεννήτρια εντολών Sed
Γεννήτρια κειμένου τέχνης ASCII
Γεννήτρια παραπομπών
Γεννήτρια/Banner Zalgo
Διάγραμμα δομής φακέλου
Διαφορά κειμένου
Διαχωριστής προτροπών AI
Δοκιμαστής Regex
Εικόνα σε ASCII Art
Εκτιμητής διακριτικών GPT
Εξαγωγέας γοργόνας
Εξαγωγή κειμένου από HTML
Επιλογέας emoji
Επιλογέας Τυχαίων Γραμμών
Εύρεση διπλότυπων γραμμών
Κείμενο στο αλφάβητο του ΝΑΤΟ
Κοινή χρήση συνδέσμων κοινωνικής δικτύωσης
Κωδικοποιητής/Αποκωδικοποιητής διακριτικών GPT
Μετατροπέας διάταξης πληκτρολογίου
Μετατροπέας κώδικα Μορς
Μετατροπέας λίστας
Μετατροπέας πεζών-κεφαλαίων
Μετατροπέας ρούνων
Μεταφραστής κειμένου
Μορφοποιητής Unicode
Ξεχωριστές λέξεις
Ονόματα κειμένου σε Unicode
Στατιστικά κειμένου
Συσκευασία αρχείων για AI
Σύγκριση γραμματοσειρών
Σύγκριση λιστών
Υπολογιστής Levenshtein
Argon2 Hasher
Bcrypt
Niceware Bytes σε Passphrase
PGP keygen
Paseto/PASERK Δημόσιο/Ιδιωτικό
Paseto/PASERK Τοπικό
Αναλυτής JWT
Αναλυτής SAML
Αναλυτής πιστοποιητικών/κλειδιών
Αποκρυπτογράφηση κρυπτογράφησης θησαυροφυλάκιου Ansible
Αρχείο Hasher
Γεννήτρια Hmac
Γεννήτρια JWT
Γεννήτρια ΕΚΕ
Γεννήτρια ζεύγους κλειδιών ECDSA
Γεννήτρια ζεύγους κλειδιών Ed25519
Γεννήτρια ζεύγους κλειδιών RSA
Γεννήτρια πιστοποιητικών X509
Κείμενο κατακερματισμού
Κρυπτογράφηση / αποκρυπτογράφηση κειμένου
Κρυπτογράφηση PGP
Κρυπτογράφηση RSA
Κρυπτογράφηση αρχείων PGP
Κρυπτογράφηση συμβολοσειρών Jasypt
Κρυπτογραφία AGE
Κωδικοποιητής/Αποκωδικοποιητής Bech32
Μετατροπέας πιστοποιητικών SSL
Μυστική Κοινοποίηση του Shamir
Υπογράφων και Επαληθευτών RSA/DSA/ECDSA
Υπολογιστής CRC
Docker Compose σε Quadlets
Docker επιθεώρηση για εκτέλεση Docker
Γεννήτρια RBAC Kubernetes
Γεννήτρια ετικετών Dockerfile
Δημιουργός σύνθεσης Traefik Docker
Εκτέλεση Docker σε Quadlets
Επικυρωτής Docker Compose
Ετικέτες Docker Pangolin
Λήψη εικόνων Docker
Μετατροπέας Docker Compose σε Docker run
Μετατροπέας Docker που εκτελείται σε Docker compose
Μετατροπέας μορφής Docker Compose
Σύνθεση Docker σε kubernetes
Σύνταξη Docker σε αρχείο .env
Το Docker εκτελείται στο kubernetes
Δημιουργός σημείων αναφοράς
Υπολογιστής αναλογίας διαστάσεων
Υπολογιστής γεωγραφικής απόστασης
Υπολογιστής ποσοστού
Αξιολογητής μαθηματικών
Δυαδική Αριθμομηχανή
Μαθηματικά OCR
Μετατροπέας Μαθηματικών Μορφών
Οπτικοποιητής Τριγωνομετρικών/Εξισώσεων Καμπυλών
Υπολογιστής φιλοδωρήματος
CSV σε δεδομένα
Excel σε δεδομένα
Torrent σε Magnet
Γεννήτρια ULID
Κανονικοποιητής ηλεκτρονικού ταχυδρομείου
Κείμενο σε Unicode
Κείμενο σε δυαδικό UTF-8
Κωδικοποιητής/αποκωδικοποιητής δεκαεξαδικού πίνακα Base64
Κωδικοποιητής/αποκωδικοποιητής συμβολοσειρών Base64
Μετατροπέας dBm mW
Μετατροπέας Γεωγραφικών Συντεταγμένων
Μετατροπέας αρχείων Base64
Μετατροπέας βάσης ακεραίων αριθμών
Μετατροπέας ιδιοτήτων
Μετατροπέας μονάδων αποθήκευσης δεδομένων
Μετατροπέας μορφής μεταβλητών περιβάλλοντος
Μετατροπέας πολλών μονάδων
Μετατροπέας ρωμαϊκών αριθμών
Μετατροπέας χαρακτήρων Unicode σε οντότητες Java
Υπολογιστής Κατανάλωσης και Εξόδων Ενέργειας
Υπολογιστής Απόσβεσης
Αναποδογυριστής κερμάτων
Επιλογέας καρτών
Ρόλερ ζαριών
Τροχός της τύχης
TOML Linter
TOML σε JSON
TOML σε YAML
Μετατροπέας Ενέργειας Τροφίμων
Μετατροπέας Μονάδων Δύναμης
Μετατροπέας Μονάδων Εμβαδού
Μετατροπέας Μονάδων Ενέργειας
Μετατροπέας Μονάδων Μάζας
Μετατροπέας Φωτισμού
Μετατροπέας επιτάχυνσης
Μετατροπέας θερμοκρασίας
Μετατροπέας ισχύος
Μετατροπέας μονάδων γωνίας
Μετατροπέας μονάδων μήκους
Μετατροπέας μονάδων πίεσης
Μετατροπέας μονάδων όγκου
Μετατροπέας προθεμάτων SI
Μετατροπέας ρυθμού ροής όγκου
Μετατροπέας συχνότητας
Μετατροπέας ταχύτητας
Υπολογιστής γυμναστικής
Docker Cheatsheet
Git cheatsheet
Jq Cheatsheet
Κοινό Regex Cheatsheet
Νανο Φύλλο Εξαρτήσεων
Φυλλάδιο με συμβουλές για το K8s
Φύλλο ελέγχου Docker Compose
Φύλλο ελέγχου Docker SWARM
Φύλλο ελέγχου Dockerfile
Φύλλο ελέγχου Regex
Φύλλο ελέγχου Sed
Φύλλο ελέγχου επιλογέων CSS
Φύλλο με τσιπς Bash
Φύλλο οδηγιών για την εντολή chmod
Φύλλο οδηγιών για τις εντολές Tmux
Φύλλο οδηγιών εντολών οθόνης
Φύλλο οδηγιών σύνταξης JSONPath
Φύλλο οδηγιών σύνταξης XPath
Φύλλο οδηγιών χρήσης Nginx
Φύλλο οδηγιών χρήσης Powershell
Φύλλο οδηγιών χρήσης VIM
Φύλλο οδηγιών χρήσης σημασιολογικής υποβολής Git
Φύλλο οδηγιών χρήσης της εντολής Zellij
Φύλλο πληροφοριών Markdown
HTML σε markdown
Markdown Lorem Ipsum
tools.markdown-format-converter.name
Από Epub σε Markdown
Βελτιωτής πίνακα Markdown
Γεννήτρια toc markdown
Γεννήτρια πίνακα Markdown
Διαφορά Markdown
Επεξεργαστής Markdown
Επικόλληση ως Markdown
Μείωση σε DOCX
Μείωση σε HTML
Μείωση σε κείμενο
Μείωση στα δεδομένα
Προεπισκόπηση Markdown

Φύλλο ελέγχου Docker SWARM

Φύλλο ελέγχου λειτουργίας Docker Swarm

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