mirror of https://github.com/docker/docs.git
142 lines
5.0 KiB
Markdown
142 lines
5.0 KiB
Markdown
---
|
|
description: Docker Engine Swarm mode overview
|
|
keywords: docker, container, cluster, swarm, docker engine
|
|
title: Swarm mode
|
|
weight: 80
|
|
aliases:
|
|
- /api/swarm-api/
|
|
- /engine/userguide/networking/overlay-standalone-swarm/
|
|
- /network/overlay-standalone.swarm/
|
|
- /release-notes/docker-swarm/
|
|
- /swarm/
|
|
- /swarm/api/
|
|
- /swarm/configure-tls/
|
|
- /swarm/discovery/
|
|
- /swarm/get-swarm/
|
|
- /swarm/install-manual/
|
|
- /swarm/install-w-machine/
|
|
- /swarm/multi-host-networking/
|
|
- /swarm/multi-manager-setup/
|
|
- /swarm/networking/
|
|
- /swarm/overview/
|
|
- /swarm/plan-for-production/
|
|
- /swarm/provision-with-machine/
|
|
- /swarm/reference/
|
|
- /swarm/reference/create/
|
|
- /swarm/reference/help/
|
|
- /swarm/reference/join/
|
|
- /swarm/reference/list/
|
|
- /swarm/reference/manage/
|
|
- /swarm/reference/swarm/
|
|
- /swarm/release-notes/
|
|
- /swarm/scheduler/
|
|
- /swarm/scheduler/filter/
|
|
- /swarm/scheduler/rescheduling/
|
|
- /swarm/scheduler/strategy/
|
|
- /swarm/secure-swarm-tls/
|
|
- /swarm/status-code-comparison-to-docker/
|
|
- /swarm/swarm-api/
|
|
- /swarm/swarm_at_scale/
|
|
- /swarm/swarm_at_scale/02-deploy-infra/
|
|
- /swarm/swarm_at_scale/03-create-cluster/
|
|
- /swarm/swarm_at_scale/04-deploy-app/
|
|
- /swarm/swarm_at_scale/about/
|
|
- /swarm/swarm_at_scale/deploy-app/
|
|
- /swarm/swarm_at_scale/deploy-infra/
|
|
- /swarm/swarm_at_scale/troubleshoot/
|
|
---
|
|
|
|
{{< include "swarm-mode.md" >}}
|
|
|
|
Current versions of Docker include Swarm mode for natively managing a cluster
|
|
of Docker Engines called a swarm. Use the Docker CLI to create a swarm, deploy
|
|
application services to a swarm, and manage swarm behavior.
|
|
|
|
Docker Swarm mode is built into the Docker Engine. Do not confuse Docker Swarm mode
|
|
with [Docker Classic Swarm](https://github.com/docker/classicswarm)
|
|
which is no longer actively developed.
|
|
|
|
## Feature highlights
|
|
|
|
### Cluster management integrated with Docker Engine
|
|
|
|
Use the Docker Engine CLI to create a swarm of Docker Engines where you can deploy application
|
|
services. You don't need additional orchestration software to create or manage
|
|
a swarm.
|
|
|
|
### Decentralized design
|
|
|
|
Instead of handling differentiation between node roles at deployment time, the Docker Engine handles any specialization at runtime. You can deploy both kinds of nodes, managers and workers, using the
|
|
Docker Engine. This means you can build an entire swarm from a single disk
|
|
image.
|
|
|
|
### Declarative service model
|
|
|
|
Docker Engine uses a declarative approach to
|
|
let you define the desired state of the various services in your application
|
|
stack. For example, you might describe an application comprised of a web front
|
|
end service with message queueing services and a database backend.
|
|
|
|
### Scaling
|
|
|
|
For each service, you can declare the number of tasks you want to
|
|
run. When you scale up or down, the swarm manager automatically adapts by
|
|
adding or removing tasks to maintain the desired state.
|
|
|
|
### Desired state reconciliation
|
|
|
|
The swarm manager node constantly monitors
|
|
the cluster state and reconciles any differences between the actual state and your
|
|
expressed desired state. For example, if you set up a service to run 10
|
|
replicas of a container, and a worker machine hosting two of those replicas
|
|
crashes, the manager creates two new replicas to replace the replicas that
|
|
crashed. The swarm manager assigns the new replicas to workers that are
|
|
running and available.
|
|
|
|
### Multi-host networking
|
|
|
|
You can specify an overlay network for your
|
|
services. The swarm manager automatically assigns addresses to the containers
|
|
on the overlay network when it initializes or updates the application.
|
|
|
|
### Service discovery
|
|
|
|
Swarm manager nodes assign each service in the swarm a
|
|
unique DNS name and load balance running containers. You can query every
|
|
container running in the swarm through a DNS server embedded in the swarm.
|
|
|
|
### Load balancing
|
|
|
|
You can expose the ports for services to an
|
|
external load balancer. Internally, the swarm lets you specify how to distribute
|
|
service containers between nodes.
|
|
|
|
### Secure by default
|
|
|
|
Each node in the swarm enforces TLS mutual
|
|
authentication and encryption to secure communications between itself and all
|
|
other nodes. You have the option to use self-signed root certificates or
|
|
certificates from a custom root CA.
|
|
|
|
### Rolling updates
|
|
|
|
At rollout time you can apply service updates to nodes
|
|
incrementally. The swarm manager lets you control the delay between service
|
|
deployment to different sets of nodes. If anything goes wrong, you can
|
|
roll back to a previous version of the service.
|
|
|
|
## What's next?
|
|
|
|
* Learn Swarm mode [key concepts](key-concepts.md).
|
|
* Get started with the [Swarm mode tutorial](swarm-tutorial/index.md).
|
|
* Explore Swarm mode CLI commands
|
|
* [swarm init](/reference/cli/docker/swarm/init.md)
|
|
* [swarm join](/reference/cli/docker/swarm/join.md)
|
|
* [service create](/reference/cli/docker/service/create.md)
|
|
* [service inspect](/reference/cli/docker/service/inspect.md)
|
|
* [service ls](/reference/cli/docker/service/ls.md)
|
|
* [service rm](/reference/cli/docker/service/rm.md)
|
|
* [service scale](/reference/cli/docker/service/scale.md)
|
|
* [service ps](/reference/cli/docker/service/ps.md)
|
|
* [service update](/reference/cli/docker/service/update.md)
|