Skip to content

🐋 Docker Swarm

KillovSky edited this page Oct 10, 2024 · 1 revision

Guia de Instalação Docker no Linux 🐳

📚 Sumário


🔄 Atualização dos Repositórios do Ubuntu 24.04

Vamos garantir que você tenha acesso às versões mais recentes dos pacotes disponíveis:

  1. Abra o terminal.

  2. Atualize a lista de pacotes:

    sudo apt update
  3. 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.

  4. 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.

  5. 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.


🐳 Instalação do Docker no Ubuntu

Certifique-se de seguir cada etapa cuidadosamente.

🛠️ Pré-requisitos

  • 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)

🚫 Desinstalar versões antigas

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

📥 Configurar o repositório do Docker

  1. Atualize o índice de pacotes e instale pacotes necessários:

    sudo apt-get update
    sudo apt-get install ca-certificates curl gnupg
  2. 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
  3. 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
  4. Atualize o índice de pacotes novamente:

    sudo apt-get update

💾 Instalar o Docker

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

✅ Verificar a instalação

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!

👤 Configuração pós-instalação

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.


🌊 Configurando o Docker Swarm em Nó Único

Isso é útil para aprender e testar recursos do Swarm antes de expandir para um cluster multi-nó.

🛠️ Pré-requisitos

  • Docker Engine instalado e funcionando
  • Permissões: Acesso de superusuário (sudo) ou estar logado como root

⚙️ Passos para Configurar o Docker Swarm

  1. Inicialize o Swarm:

    sudo docker swarm init
  2. 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.

  3. Liste os Nós do Swarm (opcional):

    sudo docker node ls

    Você deverá ver uma linha mostrando seu nó como Leader com status Ready.

📌 Desativando o Swarm (Se Necessário)

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ó.


🖥️ Instalação e Setup Inicial do Portainer no Docker Swarm

O Portainer é serve para facilitar a gestão de contêineres Docker, e ambientes Swarm através de uma interface web.

✅ Pré-requisitos

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

🌐 Criação da Rede

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.

  1. Crie uma rede overlay chamada "minha_rede":

    docker network create --driver overlay --attachable minha_rede
  2. Verifique se a rede foi criada corretamente:

    docker network ls

    Você deve ver "minha_rede" listada com o driver "overlay".

🚀 Instalação do Portainer

  1. 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
  2. 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 e portainer estão usando a rede "minha_rede", conforme exemplo:

      services:
        agent:
          ...
          networks:
            - minha_rede
      
        portainer:
          ...
          networks:
            - minha_rede
  3. Salve e feche o arquivo (no nano, use Ctrl+X, depois Y, e Enter).

  4. Implante o stack usando o arquivo YAML modificado:

    docker stack deploy -c portainer-agent-stack.yml portainer
  5. 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
    

🛠️ Setup Inicial do Portainer

  1. 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.

  2. 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).
  3. 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.
  4. Conecte-se ao ambiente Docker:

    • O Portainer detectará automaticamente o ambiente local e o configurará para você.
  5. Comece a usar o Portainer:

    • Clique em Get Started para acessar o painel principal.

📚 Dicas Adicionais

  • 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 e portainer_agent se sua configuração for diferente

    Para 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.


📦 Criando e Implantando uma Stack no Portainer

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!

📝 Stack da Iris

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

📋 Passos para Criar e Implantar a Stack

Siga os passos abaixo para criar e implantar a stack da Iris no Portainer:

  1. 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.

  2. 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.

  3. Acesse a seção de Stacks:

    No menu à esquerda, clique em "Stacks".

  4. Crie uma nova Stack:

    • Clique em "Add Stack".
    • Você será redirecionado para a página de criação de uma nova stack.
  5. 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.
  6. 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.
  7. 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.
  8. Acess control:

    • Desmarque a caixa Enable access control
  9. 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.
  1. 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.
  1. 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.
  1. 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"

🛠️ Dicas Adicionais

  • 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.
  • 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.
  • 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.
  • 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.
  • 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.

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.


Clone this wiki locally