---
## 1. Swarm Initialization & Management {#swarm-init}
```bash
# 1. Initialize a new swarm
docker swarm init
# 2. Initialize with specific advertise address
docker swarm init --advertise-addr 192.168.1.100
# 3. Initialize with specific data path address
docker swarm init --advertise-addr 192.168.1.100 --data-path-addr 10.0.0.100
# 4. Initialize with specific listen address
docker swarm init --listen-addr 192.168.1.100:2377
# 5. Get current swarm info
docker info | grep -A 10 Swarm
# 6. Get swarm join token for workers
docker swarm join-token worker
# 7. Get swarm join token for managers
docker swarm join-token manager
# 8. Rotate join token for workers
docker swarm join-token --rotate worker
# 9. Rotate join token for managers
docker swarm join-token --rotate manager
# 10. Get both tokens in quiet mode
docker swarm join-token -q worker
docker swarm join-token -q manager
# 11. Update swarm configuration
docker swarm update --task-history-limit 10
# 12. Update certificate expiry
docker swarm update --cert-expiry 720h
# 13. Enable autolock
docker swarm update --autolock=true
# 14. Disable autolock
docker swarm update --autolock=false
# 15. Get unlock key
docker swarm unlock-key
# 16. Rotate unlock key
docker swarm unlock-key --rotate
# 17. Unlock a swarm
docker swarm unlock
# 18. Leave swarm (worker)
docker swarm leave
# 19. Force leave swarm (manager)
docker swarm leave --force
# 20. Initialize swarm with external CA
docker swarm init --external-ca protocol=cfssl,url=https://ca.example.com
```
---
## 2. Node Management {#node-mgmt}
```bash
# 21. List all nodes
docker node ls
# 22. List nodes with custom format
docker node ls --format "{{.ID}}: {{.Hostname}} - {{.Status}}"
# 23. List only manager nodes
docker node ls --filter "role=manager"
# 24. List only worker nodes
docker node ls --filter "role=worker"
# 25. Inspect a node
docker node inspect node-1
# 26. Inspect node in pretty format
docker node inspect --pretty node-1
# 27. Get node's IP address
docker node inspect --format '{{.Status.Addr}}' node-1
# 28. Get node's hostname
docker node inspect --format '{{.Description.Hostname}}' node-1
# 29. Get node's resources
docker node inspect --format '{{.Description.Resources}}' node-1
# 30. Promote worker to manager
docker node promote worker-1
# 31. Promote multiple nodes
docker node promote worker-1 worker-2 worker-3
# 32. Demote manager to worker
docker node demote manager-2
# 33. Set node to drain (maintenance mode)
docker node update --availability drain node-1
# 34. Set node to active
docker node update --availability active node-1
# 35. Set node to pause
docker node update --availability pause node-1
# 36. Add label to node
docker node update --label-add type=database node-1
# 37. Add multiple labels
docker node update --label-add environment=production --label-add zone=us-east node-1
# 38. Remove label from node
docker node update --label-rm type node-1
# 39. Update node role directly
docker node update --role manager node-1
# 40. Remove a node (must be down)
docker node rm node-1
# 41. Force remove a node
docker node rm --force node-1
# 42. Get tasks running on a node
docker node ps node-1
# 43. Get only running tasks on a node
docker node ps --filter "desired-state=running" node-1
# 44. Get failed tasks on a node
docker node ps --filter "desired-state=shutdown" node-1
```
---
## 3. Service Creation {#service-create}
```bash
# 45. Create simple service
docker service create --name web nginx
# 46. Create service with specific image tag
docker service create --name web nginx:1.25-alpine
# 47. Create service with replicas
docker service create --name web --replicas 3 nginx
# 48. Create service with published port
docker service create --name web --publish 80:80 nginx
# 49. Create service with custom publish mode
docker service create --name web --publish published=8080,target=80,mode=host nginx
# 50. Create service with multiple ports
docker service create --name app --publish 80:80 --publish 443:443 nginx
# 51. Create service with environment variables
docker service create --name app --env NODE_ENV=production node:18
# 52. Create service with multiple env vars
docker service create --name app \
--env NODE_ENV=production \
--env DB_HOST=postgres \
--env PORT=3000 \
node:18
# 53. Create service with env file
docker service create --name app --env-file .env node:18
# 54. Create service with volume mount
docker service create --name web \
--mount type=volume,source=web-data,target=/usr/share/nginx/html \
nginx
# 55. Create service with bind mount
docker service create --name web \
--mount type=bind,source=/host/data,target=/container/data \
nginx
# 56. Create service with tmpfs mount
docker service create --name cache \
--mount type=tmpfs,target=/cache,tmpfs-size=1G \
redis
# 57. Create service with read-only volume
docker service create --name web \
--mount type=volume,source=web-data,target=/data,readonly \
nginx
# 58. Create service with network
docker service create --name web --network my-network nginx
# 59. Create service with multiple networks
docker service create --name app \
--network frontend \
--network backend \
nginx
# 60. Create global service (one per node)
docker service create --name monitor --mode global node-exporter
# 61. Create service with custom name
docker service create --name my-web-app nginx
# 62. Create service with hostname
docker service create --name web --hostname my-web-server nginx
# 63. Create service with custom DNS
docker service create --name web --dns 8.8.8.8 nginx
# 64. Create service with custom DNS search
docker service create --name web --dns-search example.com nginx
# 65. Create service with extra hosts
docker service create --name web --host myhost:192.168.1.100 nginx
# 66. Create service with working directory
docker service create --name app --workdir /app node:18
# 67. Create service with user
docker service create --name app --user node node:18
# 68. Create service with custom entrypoint
docker service create --name app --entrypoint "npm start" node:18
# 69. Create service with command
docker service create --name redis redis:alpine redis-server --appendonly yes
# 70. Create service with labels
docker service create --name web \
--label com.example.version=1.0 \
--label com.example.environment=prod \
nginx
```
---
## 4. Service Configuration {#service-config}
```bash
# 71. Create service with restart policy
docker service create --name web \
--restart-condition on-failure \
--restart-delay 5s \
--restart-max-attempts 3 \
nginx
# 72. Create service with update config
docker service create --name web \
--update-parallelism 2 \
--update-delay 10s \
--update-failure-action rollback \
nginx
# 73. Create service with rollback config
docker service create --name web \
--rollback-parallelism 1 \
--rollback-delay 5s \
--rollback-monitor 30s \
nginx
# 74. Create service with stop grace period
docker service create --name app \
--stop-grace-period 30s \
node:18
# 75. Create service with stop signal
docker service create --name app \
--stop-signal SIGTERM \
node:18
# 76. Create service with isolation mode (Windows)
docker service create --name web --isolation hyperv nginx
# 77. Create service with init process
docker service create --name app --init node:18
# 78. Create service with read-only root filesystem
docker service create --name app --read-only node:18
# 79. Create service with TTY
docker service create --name app --tty node:18
# 80. Create service with sysctl options
docker service create --name app --sysctl net.core.somaxconn=1024 nginx
```
---
## 5. Service Management {#service-mgmt}
```bash
# 81. List all services
docker service ls
# 82. List services with custom format
docker service ls --format "{{.Name}}: {{.Replicas}}"
# 83. List services with filter
docker service ls --filter "name=web"
# 84. List services by label
docker service ls --filter "label=environment=production"
# 85. Update service image
docker service update --image nginx:1.25 web
# 86. Update service with force (recreate containers)
docker service update --force web
# 87. Update service replicas
docker service update --replicas 5 web
# 88. Add environment variable
docker service update --env-add NEW_VAR=value web
# 89. Remove environment variable
docker service update --env-rm OLD_VAR web
# 90. Add published port
docker service update --publish-add 8080:8080 web
# 91. Remove published port
docker service update --publish-rm 8080 web
# 92. Add network
docker service update --network-add backend web
# 93. Remove network
docker service update --network-rm backend web
# 94. Add mount
docker service update --mount-add type=volume,source=data,target=/data web
# 95. Remove mount
docker service update --mount-rm /data web
# 96. Add constraint
docker service update --constraint-add "node.role==worker" web
# 97. Remove constraint
docker service update --constraint-rm "node.role==worker" web
# 98. Add label
docker service update --label-add version=2.0 web
# 99. Remove label
docker service update --label-rm version web
# 100. Add secret
docker service update --secret-add my-secret web
# 101. Remove secret
docker service update --secret-rm my-secret web
# 102. Add config
docker service update --config-add my-config web
# 103. Remove config
docker service update --config-rm my-config web
# 104. Update with detach mode
docker service update --detach=false web
# 105. Rollback service
docker service rollback web
# 106. Remove service
docker service rm web
# 107. Remove multiple services
docker service rm web app worker
# 108. Force remove service
docker service rm --force web
```
---
## 6. Service Inspection & Logs {#service-inspect}
```bash
# 109. Inspect service
docker service inspect web
# 110. Inspect service in pretty format
docker service inspect --pretty web
# 111. Get service image
docker service inspect --format '{{.Spec.TaskTemplate.ContainerSpec.Image}}' web
# 112. Get service replicas
docker service inspect --format '{{.Spec.Mode.Replicated.Replicas}}' web
# 113. Get service networks
docker service inspect --format '{{range .Spec.TaskTemplate.Networks}}{{.Target}} {{end}}' web
# 114. View service logs
docker service logs web
# 115. Follow service logs
docker service logs -f web
# 116. View last N lines
docker service logs --tail 100 web
# 117. View logs since timestamp
docker service logs --since 2024-01-01T00:00:00 web
# 118. View logs with timestamps
docker service logs --timestamps web
# 119. View logs without task IDs
docker service logs --no-task-ids web
# 120. View raw logs (no formatting)
docker service logs --raw web
# 121. View logs with details
docker service logs --details web
# 122. List service tasks
docker service ps web
# 123. List all tasks (including stopped)
docker service ps --no-trunc web
# 124. List only running tasks
docker service ps --filter "desired-state=running" web
# 125. List failed tasks
docker service ps --filter "desired-state=shutdown" web
# 126. List tasks on specific node
docker service ps --filter "node=node-1" web
# 127. List tasks with custom format
docker service ps --format "{{.Name}} {{.Node}} {{.CurrentState}}" web
```
---
## 7. Scaling & Replicas {#scaling}
```bash
# 128. Scale service to 5 replicas
docker service scale web=5
# 129. Scale multiple services
docker service scale web=5 app=3 worker=10
# 130. Scale with detach
docker service scale --detach web=5
# 131. Scale to zero (stop all replicas)
docker service scale web=0
# 132. Get current replica count
docker service ls --filter name=web --format "{{.Replicas}}"
# 133. Scale up by one
CURRENT=$(docker service inspect --format '{{.Spec.Mode.Replicated.Replicas}}' web)
docker service scale web=$((CURRENT + 1))
# 134. Scale down by one
CURRENT=$(docker service inspect --format '{{.Spec.Mode.Replicated.Replicas}}' web)
docker service scale web=$((CURRENT - 1))
# 135. Auto-scale based on condition (script)
# if load > 80%; then docker service scale web=10; fi
```
---
## 8. Updates & Rollbacks {#updates}
```bash
# 136. Update image version
docker service update --image nginx:1.25 web
# 137. Update with parallelism
docker service update --image nginx:1.25 --update-parallelism 2 web
# 138. Update with delay
docker service update --image nginx:1.25 --update-delay 10s web
# 139. Update with failure action
docker service update --image nginx:1.25 --update-failure-action rollback web
# 140. Update with max failure ratio
docker service update --image nginx:1.25 --update-max-failure-ratio 0.2 web
# 141. Update with monitor period
docker service update --image nginx:1.25 --update-monitor 30s web
# 142. Update order (stop-first or start-first)
docker service update --image nginx:1.25 --update-order start-first web
# 143. Rollback to previous version
docker service rollback web
# 144. Rollback with custom settings
docker service rollback --rollback-parallelism 1 --rollback-delay 5s web
# 145. Force update (recreate all tasks)
docker service update --force web
# 146. Update with rollback on failure
docker service update \
--image nginx:broken \
--update-failure-action rollback \
--update-max-failure-ratio 0.3 \
web
# 147. Update multiple parameters
docker service update \
--image nginx:1.25 \
--replicas 5 \
--env-add NEW_VAR=value \
--update-parallelism 2 \
web
```
---
## 9. Network Commands {#network}
```bash
# 148. Create overlay network
docker network create --driver overlay my-network
# 149. Create attachable overlay
docker network create --driver overlay --attachable my-network
# 150. Create encrypted overlay
docker network create --driver overlay --opt encrypted my-network
# 151. Create with custom subnet
docker network create \
--driver overlay \
--subnet 10.0.9.0/24 \
--gateway 10.0.9.1 \
my-network
# 152. Create with IP range
docker network create \
--driver overlay \
--subnet 10.0.9.0/24 \
--ip-range 10.0.9.128/25 \
my-network
# 153. Create with labels
docker network create \
--driver overlay \
--label environment=production \
my-network
# 154. List networks
docker network ls
# 155. List overlay networks only
docker network ls --filter driver=overlay
# 156. Inspect network
docker network inspect my-network
# 157. Get network subnet
docker network inspect --format '{{range .IPAM.Config}}{{.Subnet}}{{end}}' my-network
# 158. Remove network
docker network rm my-network
# 159. Remove multiple networks
docker network rm network1 network2 network3
# 160. Prune unused networks
docker network prune
# 161. Force prune networks
docker network prune --force
# 162. Connect service to network
docker service update --network-add my-network web
# 163. Disconnect service from network
docker service update --network-rm my-network web
```
---
## 10. Volume & Storage {#volume}
```bash
# 164. Create volume
docker volume create my-volume
# 165. Create volume with driver
docker volume create --driver local my-volume
# 166. Create volume with options
docker volume create \
--driver local \
--opt type=nfs \
--opt o=addr=192.168.1.200,rw \
--opt device=:/path/to/dir \
nfs-volume
# 167. Create volume with labels
docker volume create --label environment=production my-volume
# 168. List volumes
docker volume ls
# 169. List volumes with filter
docker volume ls --filter driver=local
# 170. Inspect volume
docker volume inspect my-volume
# 171. Get volume mountpoint
docker volume inspect --format '{{.Mountpoint}}' my-volume
# 172. Remove volume
docker volume rm my-volume
# 173. Remove multiple volumes
docker volume rm vol1 vol2 vol3
# 174. Prune unused volumes
docker volume prune
# 175. Force prune volumes
docker volume prune --force
# 176. Service with named volume
docker service create --name web \
--mount type=volume,source=web-data,target=/data \
nginx
# 177. Service with anonymous volume
docker service create --name web \
--mount type=volume,target=/data \
nginx
# 178. Service with bind mount
docker service create --name web \
--mount type=bind,source=/host/path,target=/container/path \
nginx
# 179. Service with tmpfs
docker service create --name app \
--mount type=tmpfs,target=/tmp,tmpfs-size=1G \
nginx
# 180. Service with NFS volume
docker service create --name web \
--mount type=volume,source=nfs-volume,target=/data \
nginx
```
---
## 11. Secrets Management {#secrets}
```bash
# 181. Create secret from file
docker secret create db_password password.txt
# 182. Create secret from stdin
echo "my-secret-password" | docker secret create db_password -
# 183. Create secret with label
docker secret create --label environment=prod db_password password.txt
# 184. List secrets
docker secret ls
# 185. List secrets with filter
docker secret ls --filter label=environment=prod
# 186. Inspect secret
docker secret inspect db_password
# 187. Inspect secret in pretty format
docker secret inspect --pretty db_password
# 188. Remove secret
docker secret rm db_password
# 189. Remove multiple secrets
docker secret rm secret1 secret2 secret3
# 190. Service with secret
docker service create --name app \
--secret db_password \
myapp:latest
# 191. Service with custom secret target
docker service create --name app \
--secret source=db_password,target=/app/password.txt \
myapp:latest
# 192. Service with secret permissions
docker service create --name app \
--secret source=db_password,target=/app/password.txt,mode=0400 \
myapp:latest
# 193. Add secret to existing service
docker service update --secret-add db_password app
# 194. Remove secret from service
docker service update --secret-rm db_password app
# 195. Rotate secret
echo "new-password" | docker secret create db_password_v2 -
docker service update \
--secret-rm db_password \
--secret-add db_password_v2 \
app
# 196. Get secret creation date
docker secret inspect --format '{{.CreatedAt}}' db_password
# 197. Get secret updated date
docker secret inspect --format '{{.UpdatedAt}}' db_password
```
---
## 12. Configs Management {#configs}
```bash
# 198. Create config from file
docker config create nginx.conf nginx.conf
# 199. Create config from stdin
cat config.json | docker config create app_config -
# 200. Create config with label
docker config create --label version=1.0 app_config config.json
# 201. List configs
docker config ls
# 202. List configs with filter
docker config ls --filter label=version=1.0
# 203. Inspect config
docker config inspect app_config
# 204. Inspect config in pretty format
docker config inspect --pretty app_config
# 205. Get config data
docker config inspect --format '{{.Spec.Data}}' app_config | base64 -d
# 206. Remove config
docker config rm app_config
# 207. Remove multiple configs
docker config rm config1 config2 config3
# 208. Service with config
docker service create --name web \
--config source=nginx.conf,target=/etc/nginx/nginx.conf \
nginx
# 209. Service with config permissions
docker service create --name web \
--config source=nginx.conf,target=/etc/nginx/nginx.conf,mode=0444 \
nginx
# 210. Add config to existing service
docker service update --config-add nginx.conf web
# 211. Remove config from service
docker service update --config-rm nginx.conf web
# 212. Update config (create new version)
docker config create nginx_v2.conf nginx.conf
docker service update \
--config-rm nginx.conf \
--config-add source=nginx_v2.conf,target=/etc/nginx/nginx.conf \
web
```
---
## 13. Stack Deployment {#stack}
```bash
# 213. Deploy stack
docker stack deploy -c docker-compose.yml myapp
# 214. Deploy with multiple compose files
docker stack deploy -c docker-compose.yml -c docker-compose.prod.yml myapp
# 215. Deploy with environment file
docker stack deploy -c docker-compose.yml --env-file .env myapp
# 216. Deploy with prune (remove services not in compose)
docker stack deploy -c docker-compose.yml --prune myapp
# 217. Deploy with resolve image
docker stack deploy -c docker-compose.yml --resolve-image always myapp
# 218. Deploy in detached mode
docker stack deploy -c docker-compose.yml --detach=false myapp
# 219. List stacks
docker stack ls
# 220. List stack services
docker stack services myapp
# 221. List stack services with filter
docker stack services --filter name=web myapp
# 222. List stack tasks
docker stack ps myapp
# 223. List only running tasks
docker stack ps --filter "desired-state=running" myapp
# 224. List failed tasks
docker stack ps --filter "desired-state=shutdown" myapp
# 225. Remove stack
docker stack rm myapp
# 226. Remove multiple stacks
docker stack rm app1 app2 app3
# 227. Get stack configuration
docker stack config -c docker-compose.yml
# 228. Validate compose file
docker stack config -c docker-compose.yml > /dev/null
# 229. Deploy with custom stack name
docker stack deploy -c docker-compose.yml my-custom-stack
```
---
## 14. Placement & Constraints {#placement}
```bash
# 230. Service with node constraint
docker service create --name web \
--constraint 'node.role==worker' \
nginx
# 231. Service with multiple constraints
docker service create --name db \
--constraint 'node.role==worker' \
--constraint 'node.labels.type==database' \
postgres
# 232. Service with placement preference
docker service create --name web \
--placement-pref 'spread=node.labels.datacenter' \
nginx
# 233. Service with multiple placement prefs
docker service create --name web \
--placement-pref 'spread=node.labels.datacenter' \
--placement-pref 'spread=node.labels.rack' \
nginx
# 234. Service with max replicas per node
docker service create --name web \
--replicas 10 \
--replicas-max-per-node 2 \
nginx
# 235. Add constraint to existing service
docker service update --constraint-add 'node.labels.type==app' web
# 236. Remove constraint
docker service update --constraint-rm 'node.labels.type==app' web
# 237. Add placement preference
docker service update --placement-pref-add 'spread=node.labels.zone' web
# 238. Remove placement preference
docker service update --placement-pref-rm 'spread=node.labels.zone' web
# 239. Service constrained to specific hostname
docker service create --name web \
--constraint 'node.hostname==node-1' \
nginx
# 240. Service constrained by node ID
docker service create --name web \
--constraint 'node.id==abc123' \
nginx
# 241. Service avoiding specific node
docker service create --name web \
--constraint 'node.hostname!=node-2' \
nginx
```
---
## 15. Resource Management {#resources}
```bash
# 242. Service with CPU limit
docker service create --name app \
--limit-cpu 0.5 \
node:18
# 243. Service with memory limit
docker service create --name app \
--limit-memory 512M \
node:18
# 244. Service with CPU reservation
docker service create --name app \
--reserve-cpu 0.25 \
node:18
# 245. Service with memory reservation
docker service create --name app \
--reserve-memory 256M \
node:18
# 246. Service with both limits and reservations
docker service create --name app \
--limit-cpu 1.0 \
--limit-memory 1024M \
--reserve-cpu 0.5 \
--reserve-memory 512M \
node:18
# 247. Update CPU limit
docker service update --limit-cpu 1.0 app
# 248. Update memory limit
docker service update --limit-memory 1024M app
# 249. Update CPU reservation
docker service update --reserve-cpu 0.5 app
# 250. Update memory reservation
docker service update --reserve-memory 512M app
# 251. Service with pids limit
docker service create --name app \
--limit-pids 100 \
node:18
# 252. Get service resource limits
docker service inspect --format '{{.Spec.TaskTemplate.Resources}}' app
```
---
## 16. Health Checks {#health}
```bash
# 253. Service with health check
docker service create --name web \
--health-cmd "curl -f http://localhost/ || exit 1" \
--health-interval 30s \
--health-timeout 10s \
--health-retries 3 \
nginx
# 254. Service with health check start period
docker service create --name web \
--health-cmd "curl -f http://localhost/ || exit 1" \
--health-interval 30s \
--health-timeout 10s \
--health-retries 3 \
--health-start-period 60s \
nginx
# 255. Disable health check
docker service create --name web \
--no-healthcheck \
nginx
# 256. Update health check
docker service update \
--health-cmd "wget -q --spider http://localhost/ || exit 1" \
web
# 257. Update health interval
docker service update --health-interval 60s web
# 258. Update health timeout
docker service update --health-timeout 5s web
# 259. Update health retries
docker service update --health-retries 5 web
# 260. View task health status
docker service ps --format "{{.Name}} {{.CurrentState}}" web
```
---
## 17. Monitoring & Debugging {#monitoring}
```bash
# 261. View real-time service stats
docker stats $(docker service ps -q web)
# 262. Get service creation time
docker service inspect --format '{{.CreatedAt}}' web
# 263. Get service update time
docker service inspect --format '{{.UpdatedAt}}' web
# 264. Get service version
docker service inspect --format '{{.Version.Index}}' web
# 265. Watch service status
watch docker service ps web
# 266. View service events
docker events --filter type=service --filter service=web
# 267. View node events
docker events --filter type=node
# 268. View network events
docker events --filter type=network
# 269. Get task logs by ID
docker logs <task-container-id>
# 270. Find container ID for task
docker service ps -q --no-trunc web | head -1
# 271. Execute command in service task
# First get container ID from service ps, then:
docker exec -it <container-id> /bin/sh
# 272. View swarm CA certificate
docker swarm ca
# 273. Update CA certificate
docker swarm ca --rotate
# 274. View node's engine labels
docker node inspect --format '{{.Spec.Labels}}' node-1
# 275. View node's description
docker node inspect --format '{{.Description}}' node-1
# 276. Check service convergence
docker service inspect --format '{{.Spec.Mode.Replicated.Replicas}}' web
docker service ps --filter desired-state=running web | wc -l
# 277. List all tasks across all services
docker node ps $(docker node ls -q)
# 278. Find services using a network
docker service ls --filter network=my-network
# 279. Find services using a volume
docker service ls --filter volume=my-volume
# 280. Get detailed task error
docker service ps --no-trunc web
```
---
## 18. Advanced Operations {#advanced}
```bash
# 281. Deploy visualizer for monitoring
docker service create \
--name viz \
--publish 8080:8080 \
--constraint 'node.role==manager' \
--mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \
dockersamples/visualizer
# 282. Deploy Portainer for management
docker service create \
--name portainer \
--publish 9000:9000 \
--constraint 'node.role==manager' \
--mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \
portainer/portainer-ce
# 283. Backup swarm state
tar -czf swarm-backup.tar.gz /var/lib/docker/swarm
# 284. Create service with generic resource
docker service create --name app \
--generic-resource "NVIDIA-GPU=2" \
tensorflow/tensorflow:latest-gpu
# 285. Service with custom DNS server
docker service create --name web \
--dns 8.8.8.8 \
--dns 1.1.1.1 \
nginx
# 286. Service with DNS options
docker service create --name web \
--dns-option ndots:5 \
nginx
# 287. Service with DNS search domain
docker service create --name web \
--dns-search example.com \
nginx
# 288. Service with cap-add
docker service create --name app \
--cap-add NET_ADMIN \
myapp
# 289. Service with cap-drop
docker service create --name app \
--cap-drop ALL \
--cap-add NET_BIND_SERVICE \
nginx
# 290. Service with ulimit
docker service create --name app \
--ulimit nofile=65535:65535 \
myapp
# 291. Get service endpoint mode
docker service inspect --format '{{.Spec.EndpointSpec.Mode}}' web
# 292. Create service with vip endpoint mode
docker service create --name web \
--endpoint-mode vip \
nginx
# 293. Create service with dnsrr endpoint mode
docker service create --name web \
--endpoint-mode dnsrr \
nginx
# 294. Service with custom container name
docker service create --name web \
--container-label com.example.container=web \
nginx
# 295. List services by mode
docker service ls --filter mode=replicated
docker service ls --filter mode=global
# 296. Export service configuration
docker service inspect web > web-service.json
# 297. View service's published ports
docker service inspect --format '{{range .Endpoint.Ports}}{{.PublishedPort}}:{{.TargetPort}}/{{.Protocol}} {{end}}' web
# 298. Get service task history limit
docker service inspect --format '{{.Spec.TaskTemplate.ForceUpdate}}' web
# 299. Set task history limit
docker swarm update --task-history-limit 5
# 300. Service with log driver
docker service create --name web \
--log-driver json-file \
--log-opt max-size=10m \
--log-opt max-file=3 \
nginx
# 301. Service with syslog driver
docker service create --name web \
--log-driver syslog \
--log-opt syslog-address=tcp://192.168.1.100:514 \
nginx
# 302. Get all service names
docker service ls --format '{{.Name}}'
# 303. Count running services
docker service ls --quiet | wc -l
# 304. Get total replicas across all services
docker service ls --format '{{.Replicas}}' | awk -F'/' '{sum+=$2} END {print sum}'
# 305. Find services with 0 replicas
docker service ls --format '{{.Name}}: {{.Replicas}}' | grep '0/'
# 306. Backup all secrets
docker secret ls -q | xargs -I {} sh -c 'docker secret inspect {} > {}.json'
# 307. Backup all configs
docker config ls -q | xargs -I {} sh -c 'docker config inspect {} > {}.json'
# 308. Remove all services
docker service rm $(docker service ls -q)
# 309. Remove all stopped tasks
docker service ps --filter desired-state=shutdown -q | xargs docker rm
# 310. Create test service for debugging
docker service create --name test \
--replicas 1 \
--entrypoint "sleep 3600" \
alpine
# 311. Force service rebalance
docker service update --force --detach=false web
# 312. Create service with multiple replicas and specific names
docker service create --name web-{1..3} nginx
# 313. Parallel service scaling
docker service scale web=10 app=10 db=3 cache=2
# 314. Service with privileged mode
docker service create --name app \
--mode global \
--mount type=bind,source=/,target=/host \
--privileged \
monitoring-agent
# 315. Get swarm manager address
docker node inspect self --format '{{.ManagerStatus.Addr}}'
# 316. Check if node is manager
docker node inspect self --format '{{.ManagerStatus.Reachability}}'
# 317. Get swarm cluster ID
docker info --format '{{.Swarm.Cluster.ID}}'
# 318. Get node's TLS info
docker node inspect self --format '{{.Description.TLSInfo}}'
# 319. List manager nodes with address
docker node ls --filter role=manager --format '{{.Hostname}}: {{.ManagerStatus.Addr}}'
# 320. Create service that runs on manager only
docker service create --name mgr-task \
--constraint 'node.role==manager' \
--replicas 1 \
alpine sleep 3600
```