Sistema Operacional. Ele se parece pelo fato de podermos gerar imagens, rodar distribuições ou configurações distintas dentro do computador. Mas a diferença se encontra no fato dele não virtualizar a camada de hardware e kernel do S.O. mas de compartilhar. Como um chroot no linux ou jails no *BSD.
o necessário para executar uma aplicação. - Containers: Seriam as imagens em execução, um processo ou comando dentro delas. - Volumes: Tem dois propósitos. Compartilhar dados entre host e containers e Guardar dados de forma permanente. - Networks: Adicionar uma conexão de rede interna ou externa com o container em execução.
para funcionar como: a aplicação, banco de dados, cache e etc. É muito trabalhoso colocar tudo isso em linha de comando, configurar, conectar serviços. É uma ferramenta que nasceu para a criação e execução de múltiplos contêineres de aplicação, através de arquivos de configuração.
rodando docker juntos num cluster. É um orquestrador de contêineres que resolve disponibilização de serviços, execução de tarefas, garante número réplicas, distribuição entre máquinas.
possuem o docker engine em execução conectado com swarm. Manager Nodes: gerenciam a execução das tarefas. Worker Nodes: recebem e executam a tarefa. - Multi-Host Networks: O Swarm gerencia as redes no escopo do swarm para que todos tenham conectividade entre si, mesmo dentro de sub-redes. - Services: São definições de tarefas a serem executadas nos manager ou worker nodes. Quando você cria um serviço é especificado a imagem, commando, redes, publicação, etc. - Tasks: São as execuções dos serviços que foram declarados. É uma tarefa de executar e monitorar um container com todas as configurações dos serviços
docker swarm init --advertise-addr “$ip_publico” Para pegar um token e adicionar workers: docker swarm join-token worker Para adicionar um workers no swarm: docker swarm join --token $TOKEN $IP:2377
ao invés dele criar vários containers, ele irá criar vários serviços para serem executados no swarm. Ou seja, quase sempre podemos pegar o mesmo arquivo do docker- compose e usar isso para publicar nossos serviços. o comando é: docker stack deploy \ -c docker-compose.yml