-
-
Notifications
You must be signed in to change notification settings - Fork 177
🐋 Docker Swarm
- Guia de Instalação Docker no Linux 🐳
Vamos garantir que você tenha acesso às versões mais recentes dos pacotes disponíveis:
-
Abra o terminal.
-
Atualize a lista de pacotes:
sudo apt update
-
Atualize os pacotes instalados:
sudo apt upgrade -y
Este comando baixará e instalará as atualizações disponíveis para os pacotes já instalados no seu sistema.
-
Aguarde a conclusão:
Dependendo das atualizações disponíveis, este processo pode levar alguns minutos. Aguarde até que todas as atualizações sejam concluídas.
-
Reinicie o sistema (recomendado):
Após a conclusão das atualizações, é recomendável reiniciar o sistema para garantir que todas as mudanças sejam aplicadas corretamente:
sudo reboot
Seguindo estes passos, você terá atualizado com sucesso os repositórios e pacotes do seu sistema.
Certifique-se de seguir cada etapa cuidadosamente.
- Sistema Operacional: Ubuntu 24.04 (LTS), 22.04 (LTS) ou 20.04 (LTS)
- Arquitetura: 64 bits (x86_64 / amd64)
-
Permissões: Acesso de superusuário (
sudo
)
Primeiro, remova quaisquer instalações conflitantes:
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do
sudo apt-get remove $pkg
done
-
Atualize o índice de pacotes e instale pacotes necessários:
sudo apt-get update sudo apt-get install ca-certificates curl gnupg
-
Adicione a chave GPG oficial do Docker:
sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \ sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg
-
Configure o repositório nas fontes do APT:
echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
-
Atualize o índice de pacotes novamente:
sudo apt-get update
Agora você pode instalar o Docker Engine e seus componentes:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Para verificar se o Docker foi instalado corretamente, execute o contêiner "hello-world":
sudo docker run hello-world
Se a instalação foi bem-sucedida, você verá uma mensagem de boas-vindas do Docker!
Para usar o Docker sem sudo
, adicione seu usuário ao grupo docker
:
sudo usermod -aG docker $USER
Importante: Faça logout e login novamente para as mudanças terem efeito.
Não é necessário substituir $USER
; o sistema fará isso automaticamente.
Isso é útil para aprender e testar recursos do Swarm antes de expandir para um cluster multi-nó.
- Docker Engine instalado e funcionando
-
Permissões: Acesso de superusuário (
sudo
) ou estar logado comoroot
-
Inicialize o Swarm:
sudo docker swarm init
-
Verifique o Status do Swarm:
sudo docker info
Procure pela seção Swarm nas informações exibidas. Deve mostrar que o Swarm está active e que este nó é um manager.
-
Liste os Nós do Swarm (opcional):
sudo docker node ls
Você deverá ver uma linha mostrando seu nó como Leader com status Ready.
Se você quiser desativar o modo Swarm e voltar ao Docker standalone:
sudo docker swarm leave --force
Atenção: Isso removerá todas as configurações do Swarm no nó.
O Portainer é serve para facilitar a gestão de contêineres Docker, e ambientes Swarm através de uma interface web.
Antes de começar, certifique-se de que você tem:
- Docker Engine instalado e funcionando
- Modo Swarm ativado e funcionando
-
Permissões: Acesso
sudo
no nó gerenciador do seu cluster Swarm - Docker rodando com as permissões necessárias
Antes de instalar o Portainer, é importante criar uma rede overlay para que o Portainer e seus agentes possam se comunicar de forma segura em todo o cluster Swarm.
-
Crie uma rede overlay chamada "minha_rede":
docker network create --driver overlay --attachable minha_rede
-
Verifique se a rede foi criada corretamente:
docker network ls
Você deve ver "minha_rede" listada com o driver "overlay".
-
Baixe o arquivo YAML do stack do Portainer:
curl -L https://downloads.portainer.io/ce2-21/portainer-agent-stack.yml -o portainer-agent-stack.yml
-
Edite o arquivo baixado:
nano portainer-agent-stack.yml
-
Substitua todas as referências da rede "agent_network" por "minha_rede".
-
Certifique-se de que a seção
networks
no final do arquivo esteja assim: -
Certifique-se de adicionar external: true no final do arquivo, junto as redes da stack, conforme exemplo abaixo:
networks: minha_rede: external: true volumes: portainer_data:
-
Você também deve se certificar de que os serviços
agent
eportainer
estão usando a rede "minha_rede", conforme exemplo:services: agent: ... networks: - minha_rede portainer: ... networks: - minha_rede
-
-
Salve e feche o arquivo (no nano, use
Ctrl+X
, depoisY
, e Enter). -
Implante o stack usando o arquivo YAML modificado:
docker stack deploy -c portainer-agent-stack.yml portainer
-
Verifique se os contêineres do Portainer Server e Agent foram iniciados:
docker ps
Você deve ver contêineres similares aos abaixo:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2db7dd4bfba0 portainer/portainer-ce:2.21.2 "/portainer -H t..." X minutes ago Up X minutes 8000/tcp, 9443/tcp portainer_portainer.1.xxxxxxxx 59ee466f6b15 portainer/agent:2.21.2 "./agent" X minutes ago Up X minutes portainer_agent.xxxxxxxx
-
Acesse a interface web do Portainer:
Abra um navegador web e acesse:
https://localhost:9443
Se necessário, substitua
localhost
pelo endereço IP do seu servidor. -
Configure o usuário administrador:
- Crie um nome de usuário (padrão é admin, mas você pode alterá-lo).
- Defina uma senha segura (mínimo de 12 caracteres).
-
Opte pela coleta de estatísticas (opcional):
- Você pode optar por participar ou não da coleta de dados anônimos.
- Esta opção pode ser alterada posteriormente nas configurações do Portainer.
-
Conecte-se ao ambiente Docker:
- O Portainer detectará automaticamente o ambiente local e o configurará para você.
-
Comece a usar o Portainer:
- Clique em Get Started para acessar o painel principal.
-
Certificado SSL: O Portainer usa um certificado SSL autoassinado. Em caso de avisos de segurança no navegador apenas ignore, ou considere usar um certificado válido.
-
Atualizações: Mantenha suas imagens Docker atualizadas para garantir segurança e desempenho. Você pode atualizar o Portainer executando:
docker pull portainer/portainer-ce:latest docker service update --image portainer/portainer-ce:latest --publish-add 9443:9443 --force portainer_portainer
E em seguida faça o mesmo para o
portainer_agent
docker pull portainer/agent:latest docker service update --image portainer/agent:latest --force portainer_agent
substitua o nome do serviço
portainer_portainer
eportainer_agent
se sua configuração for diferentePara mais informações, verifique a documentação oficial
-
Comunicação entre serviços: Ao criar outros serviços que precisam se comunicar com o Portainer, adicione-os à rede "minha_rede".
-
Inspecionar a rede:
docker network inspect minha_rede
Isso fornecerá informações detalhadas sobre a rede, incluindo quais contêineres estão conectados a ela.
Agora que você tem o Portainer instalado e configurado, junto do Docker. Você pode usar a interface web para gerenciar suas aplicações de maneira simples.
Agora vamos mostrar como criar e implantar a stack da Iris utilizando o Portainer!
Obtenha a versão mais recente aqui, para seu docker swarm, ou aqui, para seu docker standalone
A stack da Iris é definida como um arquivo docker-compose.yml
:
version: "3.8"
services:
iris:
image: hypegg/iris-project:v1.1.6
deploy:
replicas: 1 # Mantenha em 1
restart_policy:
condition: on-failure # Define a política de reinício
volumes:
- iris_backup:/Iris/lib/Backups # Volume para backups
- iris_sessions:/Iris/lib/Sessions # Volume para sessões
- iris_databases:/Iris/lib/Databases # Volume para bancos de dados
# - iris_commands:/Iris/lib/Commands # Volume para comandos (Opcional)
# - iris_Dialogues:/Iris/lib/Dialogues # Volume para diálogos (Opcional)
networks:
- iris_network # Nome da rede
ports:
- "3000:3000" # Mapeamento da porta 3000
volumes:
iris_backup:
iris_sessions:
iris_databases:
# iris_commands:
# iris_Dialogues:
networks:
iris_network: # Define uma rede que será criada automaticamente
Siga os passos abaixo para criar e implantar a stack da Iris no Portainer:
-
Acesse o Portainer:
Abra o navegador e acesse a interface web do Portainer em:
https://localhost:9443
Substitua
localhost
pelo endereço IP do seu servidor, se necessário. -
Navegue até o seu ambiente Docker Swarm:
Na página inicial do Portainer, você verá os ambientes disponíveis. Clique em "primary" ou no nome do seu ambiente Docker Swarm.
-
Acesse a seção de Stacks:
No menu à esquerda, clique em "Stacks".
-
Crie uma nova Stack:
- Clique em "Add Stack".
- Você será redirecionado para a página de criação de uma nova stack.
-
Configure a Stack:
-
Nome da Stack: Insira um nome para sua stack, por exemplo,
iris
(Particularmente gosto de utilizar o nome do serviço, sempre que possível). - Web editor: Certifique-se de que a opção "Web editor" esteja selecionada.
-
Nome da Stack: Insira um nome para sua stack, por exemplo,
-
Insira o conteúdo da Stack:
- Copie o conteúdo do arquivo
docker-compose
da iris, fornecido acima. - Cole-o na área de texto do web editor no Portainer.
- Copie o conteúdo do arquivo
-
Revise e ajuste se necessário:
- Verifique se todas as informações estão corretas.
- Certifique-se de que a indentação do YAML está correta, pois erros de formatação podem causar falhas no deploy.
-
Acess control:
- Desmarque a caixa
Enable access control
- Desmarque a caixa
-
Implante a Stack:
- Clique em "Deploy the stack" na parte inferior da página.
- O Portainer irá processar o arquivo e iniciar os serviços definidos.
- Verifique o status da Stack:
- Após o deploy, você será redirecionado para a página da stack.
- Verifique se o serviço
iris_iris
está em execução.
- Acessando o log do console:
- Clique na seta para baixo, ao lado do nome do serviço para ver detalhes adicionais.
- Clique no ícone de página com canto dobrado para acessar os logs da aplicação.
- Agora basta fazer o scan do código QR para conectar seu whatsapp a iris.
-
Teste a aplicação web:
-
Se desejar, a
iris
expõe uma interface web, você pode acessar usando:http://localhost:3000
Novamente, substitua
localhost
pelo endereço IP do seu servidor, se necessário.- 3000 é a porta padrão, você pode alterar a porta mapeando-a para a que desejar dentro da stack.
- Por exemplo, se você alterar de "3000:3000", para "42789:3000", sua aplicação web será acessível na porta "42789" externa, enquanto a o container tem ela rodando na porta "3000"
-
-
Gerenciamento de Volumes:
- Os volumes definidos na stack (
iris_backup
,iris_sessions
,iris_databases
) serão criados automaticamente. - Esses volumes persistem os dados entre reinicializações e recriações de contêineres.
- Os volumes definidos na stack (
-
Redes Personalizadas:
- A rede
iris_network
é criada automaticamente e permite a comunicação entre serviços da stack. - Se você precisa que outros serviços ou stacks se comuniquem com a
iris
, certifique-se de que eles compartilham a mesma rede ou configure a rede conforme necessário.
- A rede
-
Escalabilidade:
- Embora a iris esteja configurada para ter apenas uma réplica (
replicas: 1
). Outras aplicações podem se ajustar esse número conforme suas necessidades, mas siga as recomendações da aplicação.
- Embora a iris esteja configurada para ter apenas uma réplica (
-
Atualizações da Stack:
- Para atualizar a stack (por exemplo, para uma nova versão da imagem), navegue até a stack no Portainer, clique em "Editor", faça as alterações necessárias na versão da imagem, e clique em "Update the stack".
-
Logs e Monitoramento:
- Você pode visualizar os logs do serviço
iris_iris
diretamente pelo Portainer. - Isso é útil para depurar problemas ou monitorar o comportamento da aplicação.
- Você pode visualizar os logs do serviço
-
Segurança:
- Certifique-se de que as portas expostas (como a
3000
) estão protegidas adequadamente, especialmente se o servidor estiver acessível pela internet. - Considere usar proxies reversos ou firewalls para controlar o acesso.
- Certifique-se de que as portas expostas (como a
Nota: Sempre verifique a documentação oficial da aplicação que está implantando (neste caso, a Iris) para garantir que todas as configurações atendem às necessidades específicas da aplicação.
Copyright: Tutorial construído por @hypegg em contruição para a commit #621.