English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
O Docker Swarm é uma ferramenta de gestão de cluster do Docker. Ele transforma o pool de hosts Docker em um único host virtual Docker. O Docker Swarm fornece uma API Docker padrão, todas as ferramentas que já comunicam com o daemon Docker podem usar o Swarm para se expandir facilmente para múltiplos hosts.
As ferramentas suportadas incluem, mas não se limitam a, os seguintes itens:
Dokku
Docker Compose
Docker Machine
Jenkins
Como mostrado na figura a seguir, o cluster swarm é composto por nós gerenciadores (manager) e nós de trabalho (work node).
gerenciador swarm:responsável por toda a gestão do cluster, incluindo configuração de cluster, gestão de serviços e todas as atividades relacionadas ao cluster.
nó de trabalho:ou seja, o nó disponível na imagem, responsável por executar os serviços correspondentes para executar tarefas (task).
Os exemplos a seguir são apresentados com base no Docker Machine e no virtualbox, certifique-se de que seu host já tenha o virtualbox instalado.
Criar máquina docker:
$ docker-machine create -d virtualbox swarm-manager
Inicializar o cluster swarm, a máquina que está sendo inicializada é o nó gerenciador do cluster.
$ docker-machine ssh swarm-manager $ docker swarm init --advertise-addr 192.168.99.107 #O IP aqui é o ip atribuído ao criar o computador.
A saída acima prova que a inicialização foi bem-sucedida. É necessário copiar a seguinte linha, que será usada ao adicionar um nó de trabalho:
docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh2j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377
Aqui criamos diretamente dois computadores, swarm-worker1 e swarm-worker2 .
Entre em dois computadores, especifique para adicionar ao cluster criado no passo anterior, aqui será usado o conteúdo copiado no passo anterior.
Os dados de saída acima indicam que a adição foi bem-sucedida.
Na imagem acima, devido ao conteúdo copiado anteriormente ser longo, ele será automaticamente truncado, na verdade o comando executado na imagem é o seguinte:
docker@swarm-worker1:~$ docker swarm join --token SWMTKN-1-4oogo9qziq768dma0uh2j0z0m5twlm10iynvz7ixza96k6jh9p-ajkb6w7qd06y1e33yrgko64sk 192.168.99.107:2377
Entre no nó de gerenciamento e execute: docker info para ver informações do cluster atual.
$ docker info
Pelo círculo vermelho, pode-se saber que no cluster atualmente em execução há três nós, sendo um nó de gerenciamento.
Atenção:Qualquer operação relacionada ao gerenciamento de cluster é executada no nó de gerenciamento.
Neste exemplo, criamos um serviço chamado helloworld em um nó de trabalho, aqui é atribuído aleatoriamente a um nó de trabalho:
docker@swarm-gerente:~$ docker service create --replicas 1 --name helloworld alpine ping docker.com
Ver em qual nó o serviço helloworld está executando, pode ver que atualmente está no swarm-worker1 Nó:
docker@swarm-manager:~$ docker service ps helloworld
Ver informações específicas do deployment do helloworld:
docker@swarm-manager:~$ docker service inspect --pretty helloworld
Vamos expandir o serviço helloworld para dois nós.
docker@swarm-manager:~$ docker service scale helloworld=2
Pode ver que foi expandido de um nó para dois nós.
docker@swarm-manager:~$ docker service rm helloworld
Verificar se foi removido:
Neste exemplo, vamos mostrar como o redis pode ser atualizado para uma versão mais alta.
Criar um 3.0.6 versão do redis.
docker@swarm-gerente:~$ docker service create --replicas 1 --nome redis --atualização-atraso 10s redis:3.0.6
Atualização contínua do redis .
docker@swarm-gerente:~$ docker service update --image redis:3.0.7 redis
Pode ver que a versão do redis já foi 3.0.6 Atualizado para 3.0.7Indica que o serviço foi atualizado com sucesso.
Ver todos os nós:
docker@swarm-gerente:~$ docker node ls
Pode ver que todos os nós atualmente são Ativos, podem receber novas tarefas.
Parar nó swarm-worker1:
Atenção:swarm-worker1 O estado muda para Drain. Não afeta os serviços do cluster, apenas swarm-worker1 O nó não receberá novas tarefas, o desempenho do cluster diminuiu.
Pode reativar o nó com os seguintes comandos:
docker@swarm-gerente:~$ docker node update --disponibilidade ativa swarm-worker1