Docker
Docker é uma solução para utilização de containers. Através do uso de containers é possível executar aplicações de forma controlada, isoladas da infraestrutura e demais aplicações no mesmo host.
Diferente de máquinas virtuais, um container não carrega consigo toda instrumentalização necessária para um Sistema Operacional, podendo compartilhar o Kernel do Sistema Operacional do Host.
Mais informações podem sem encontradas em:
Docker Swarm
Docker Swarm é o orquestrador do containers e máquinas, para execução distribuída e coordenada de containers docker. Através do Swarm é possível definir serviços, que terão capacidades avançadas para utilização de réplicas, alta disponibilidade, atualização progressiva, entre outras.
O Docker Swarm é essencial, pois ao utilizarmos um service conseguimos facilmente definir o número de réplicas (containers) que devem estar ativos e realizar atualização da imagem docker presente em todos eles.
Iniciando o Swarm
Para iniciar um swarm, você precisa executar
docker swarm init
desta maneira já poderemos adicionar mais máquinas a este cluster e utilizar os recursos de stack.
Criando uma Stack
Uma stack descreve um conjunto de recursos necessários para a execução de serviços, como volumes, redes, serviços.
Uma stack pode ser escrita utilizando a especificação do tipo Compose. Documentação
Para criar uma stack você precisa executar
docker stack deploy --compose-file docker-compose.yml <nome-da-stack>
Veja a documentação para informações detalhadas.
Atualizando um Serviço
Com a stack criada e os serviços em execução, é possível alterar a configuração destes serviços via linha de comando.
Para um cenário de atualização via Continuous Delivery, o comando de atualização da imagem de um serviço via linha de comando é um dos mais necessários.
docker service update --image <imagem> <nome-do-serviço>
Veja a documentação para informações detalhadas.