155 lines
4.3 KiB
Markdown
155 lines
4.3 KiB
Markdown
---
|
|
obj: concept
|
|
source: https://docs.docker.com/engine/swarm
|
|
---
|
|
|
|
# Docker Swarm
|
|
Docker Swarm is a native clustering and orchestration solution for [Docker](Docker.md). It enables the creation and management of a swarm of Docker nodes, turning them into a single, virtual [Docker](Docker.md) host. Docker Swarm allows you to deploy and manage containerized applications across a cluster of machines, providing high availability, scalability, and ease of use.
|
|
|
|
## Getting started
|
|
|
|
1. Initialize a Swarm on a manager node:
|
|
|
|
```bash
|
|
docker swarm init
|
|
```
|
|
|
|
2. Join additional nodes to the Swarm:
|
|
```bash
|
|
docker swarm join --token <token> <manager-ip>
|
|
```
|
|
|
|
3. Deploy a service
|
|
Here's an example [Docker Compose](Docker%20Compose.md) file for a simple web service:
|
|
```yml
|
|
version: '3'
|
|
|
|
services:
|
|
web:
|
|
image: nginx
|
|
ports:
|
|
- "80:80"
|
|
deploy:
|
|
replicas: 3
|
|
```
|
|
|
|
Deploy this service using:
|
|
```bash
|
|
docker stack deploy -c docker-compose.yml myapp
|
|
```
|
|
|
|
## `docker swarm`
|
|
Manage Swarm
|
|
|
|
### `docker swarm ca`
|
|
Display and rotate the root CA
|
|
Usage:
|
|
```sh
|
|
# Display Cert
|
|
docker swarm ca
|
|
|
|
# Rotate cert
|
|
docker swarm ca --rotate
|
|
```
|
|
|
|
### `docker swarm init`
|
|
Initialize a swarm
|
|
Usage: `docker swarm init --advertise-addr IP`
|
|
|
|
### `docker swarm join-token`
|
|
Manage join tokens
|
|
Usage: `docker swarm join-token [--rotate] (worker|manager)`
|
|
|
|
### `docker swarm join`
|
|
Join a swarm as a node and/or manager
|
|
Usage: `docker swarm join [--token token] HOST:PORT`
|
|
|
|
### `docker swarm leave`
|
|
Leave the swarm
|
|
Usage: `docker swarm leave [-f, --force]`
|
|
|
|
## `docker node`
|
|
Manage Swarm nodes
|
|
|
|
### `docker node demote`
|
|
Demote one or more nodes from manager in the swarm
|
|
Usage: `docker node demote NODE [NODE...]`
|
|
|
|
### `docker node ls`
|
|
List nodes in the swarm
|
|
Usage: `docker node ls [--format json] [-f, --filter FILTER=VALUE]`
|
|
|
|
The currently supported filters are:
|
|
- `id`
|
|
- `label`
|
|
- `node.label`
|
|
- `membership`
|
|
- `name`
|
|
- `role`
|
|
|
|
### `docker node promote`
|
|
Promote one or more nodes to manager in the swarm
|
|
Usage: `docker node promote NODE [NODE...]`
|
|
|
|
### `docker node ps`
|
|
List tasks running on one or more nodes, defaults to current node
|
|
Usage: `docker node ps [--format json] [NODE...]`
|
|
|
|
### `docker node rm`
|
|
Remove one or more nodes from the swarm
|
|
Usage: `docker node rm [-f, --force] NODE [NODE...]`
|
|
|
|
### `docker node update`
|
|
Update metadata about a node, such as its availability, labels, or roles.
|
|
Usage: `docker node update [OPTIONS] NODE`
|
|
|
|
#### Options
|
|
|
|
| Option | Description |
|
|
| ----------------------- | ----------------------------------------------------- |
|
|
| `--availability state` | Availability of the node (`active`, `pause`, `drain`) |
|
|
| `--label-add key=value` | Add or update a node label |
|
|
| `--label-rm key` | Remove a node label if exists |
|
|
| `--role role` | Role of the node (`worker`, `manager`) |
|
|
|
|
## `docker service`
|
|
These commands apply to services and are almost identical to container commands.
|
|
```shell
|
|
docker service create [OPTIONS] IMAGE [COMMAND] [ARG...]
|
|
docker service logs [OPTIONS] SERVICE|TASK
|
|
docker service ls [OPTIONS]
|
|
docker service ps [OPTIONS] SERVICE [SERVICE...]
|
|
docker service rm SERVICE [SERVICE...]
|
|
docker service scale SERVICE=REPLICAS [SERVICE=REPLICAS...]
|
|
```
|
|
|
|
## `docker stack`
|
|
Manage Swarm stacks. This command works on a swarm orchestrator.
|
|
|
|
### `docker stack deploy`
|
|
Deploy a new stack or update an existing stack
|
|
Usage: `docker stack deploy [OPTIONS] STACK`
|
|
|
|
#### Options
|
|
|
|
| Option | Description |
|
|
| ------------------------- | ---------------------------------------------------- |
|
|
| `-c, --compose-file file` | Path to a Compose file, or `-` to read from stdin |
|
|
| `--prune` | Prune services that are no longer referenced |
|
|
| `--with-registry-auth` | Send registry authentication details to Swarm agents |
|
|
|
|
### `docker stack ls`
|
|
List stacks
|
|
Usage: `docker stack ls [--format json]`
|
|
|
|
### `docker stack ps`
|
|
List the tasks in the stack
|
|
Usage: `docker stack ps [--format json]`
|
|
|
|
### `docker stack rm`
|
|
Remove one or more stacks
|
|
Usage: `docker stack rm STACK [STACK...]`
|
|
|
|
### `docker stack services`
|
|
List the services in the stack
|
|
Usage: `docker stack services [--format json] STACK`
|