Instalar Docker e verificar os pré-requisitos

10 min
Público
iniciante, Windows, macOS ou Linux
Duração
20 a 30 min (mais o download das imagens na lição 04)
Módulo
1/7
Competência visada
ter um Docker funcional com memória suficiente, obter o kit do labo em uma pasta lab3, reconhecer sua árvore de arquivos, executar a checklist prerequis e saber o que fazer quando ela exibe um X

O kit do labo, para baixarhttps://github.com/hrhouma2/aiopsatlas-observabilite-labo-fr — via git clone https://github.com/hrhouma2/aiopsatlas-observabilite-labo-fr.git lab3. Esta lição instala o Docker (etapas 1 a 3), obtém esse kit (etapa 4), faz um tour por ele (etapa 5), depois executa sua checklist (etapa 6). A inicialização em si é na lição 04.

Em uma imagem

O painel de controle de um carro só fica todo verde se o motor tem combustível suficiente e a estrada está livre na frente dele. .\labo.ps1 prerequis (ou ./labo.sh prerequis) desempenha esse papel antes de iniciar a stack de observabilidade: o Docker é o motor, a memória alocada é o combustível, e as nove portas do labo são a estrada que precisa estar livre. Você só executa demarrer (lição 04) quando essa checklist termina com sua linha verde: Tout est prêt.

Como funciona

O labo é descrito em um arquivo docker-compose.yml e controlado por um script em duas versões: labo.ps1 (PowerShell 5.1 ou 7, Windows) e labo.sh (bash: Linux, macOS, WSL 2, Git Bash). Você não instala mais nada além do Docker na sua máquina: Prometheus, Grafana, Loki, Alertmanager, Alloy, node-exporter, cAdvisor, a API, o gerador de carga e o webhook rodam todos em contêineres. Quatro dessas imagens são construídas na sua máquina na primeira inicialização (api, charge, webhook a partir de python:3.13-slim, e loki para adicionar a ela um binário de verificação de saúde); as outras seis são baixadas prontas.

SistemaO que você instalaAjuste de memóriaParticularidade
Windows 10/11Docker Desktop, motor WSL 2arquivo %UserProfile%\.wslconfigSet-ExecutionPolicy se o PowerShell recusar o script
macOSDocker Desktop (Intel ou Apple Silicon)Settings → Resources → Memorynada mais; o curl já vem instalado
LinuxDocker Engine + plugin docker-compose-plugin + curla RAM da máquina, diretamentegrupo docker; nenhum ajuste de kernel é necessário

O que prerequis verifica, na ordem: se o comando docker existe; se o daemon do Docker responde; se o docker compose (v2) está disponível; se o curl está presente (só na versão bash: labo.ps1 usa os comandos integrados do PowerShell); se a memória visível pelo Docker é de pelo menos 2 GB (4 GB recomendados: entre 2 e 4, o script exibe um aviso mas deixa passar); pelo menos dois processadores; e cada uma das nove portas do labo está livre, ou já está sendo usada pelo próprio labo.

PortaServiçoPortaServiçoPortaServiço
9090Prometheus3100Loki8080cAdvisor
9093Alertmanager12345Alloy8000API catálogo
3000Grafana (GRAFANA_PORT)9100node-exporter8090webhook

A porta 3000 é diferente. É a do Grafana, e é a porta mais disputada em uma máquina de desenvolvedor: uma aplicação Node, outro painel de controle, outro Grafana costumam já ocupá-la. O kit prevê esse caso com a variável de ambiente GRAFANA_PORT. Em docker-compose.yml, a publicação da porta do Grafana é escrita assim:

yaml
    ports:
      - "${GRAFANA_PORT:-3000}:3000"

O que é preciso ler: ${GRAFANA_PORT:-3000} vale a variável se ela estiver definida, 3000 caso contrário. A parte direita (:3000) é a porta dentro do contêiner e nunca muda; a parte esquerda é a porta na sua máquina. Os scripts labo.ps1 e labo.sh leem a mesma variável: prerequis verifica a porta certa, demarrer exibe a URL certa e etat consulta o Grafana no lugar certo. Documentação: Docker Compose — Interpolation.

Passo a passo

  1. Windows: instalar o Docker Desktop com WSL 2. Baixe o Docker Desktop, deixe marcado "Use WSL 2 instead of Hyper-V", reinicie se solicitado, depois abra o Docker Desktop e espere o ícone da baleia ficar estável. No WSL 2, o Docker por padrão usa a metade da sua RAM; em uma máquina com 8 GB, isso é o suficiente. Para garantir 4 GB a ele, crie o arquivo C:\Users\<voce>\.wslconfig:

    powershell
    notepad $env:UserProfile\.wslconfig

    Cole estas linhas, salve, depois reinicie a máquina virtual WSL:

    ini
    [wsl2]
    memory=4GB
    processors=4
    powershell
    wsl --shutdown

    Abra o Docker Desktop novamente.

  2. macOS: instalar o Docker Desktop e verificar a memória. Instale o .dmg correspondente ao seu chip, abra o Docker Desktop, depois abra Settings → Resources → Advanced e verifique se o controle deslizante Memory está em 4 GB ou mais. Clique em "Apply & restart" se você o alterou.

  3. Linux: Docker Engine, plugin Compose, curl e grupo docker. Instale o Docker Engine e o plugin Compose conforme a documentação da sua distribuição (pacotes docker-ce, docker-ce-cli, containerd.io, docker-compose-plugin), mais curl se estiver faltando. Depois, para não precisar digitar sudo em cada comando:

    bash
    sudo usermod -aG docker $USER
    newgrp docker        # ou desconecte-se e reconecte-se
    docker run --rm hello-world
  4. Obter o kit do labo.

    bash
    git clone https://github.com/hrhouma2/aiopsatlas-observabilite-labo-fr.git lab3
    cd lab3

    Todos os comandos do curso são executados a partir dessa pasta lab3. Se você não tem git, o botão "Code → Download ZIP" da página do GitHub dá o mesmo conteúdo: descompacte e renomeie a pasta para lab3.

  5. Fazer o tour pela árvore de arquivos. Liste os arquivos (ls ou Get-ChildItem -Recurse -File). Na máquina do curso, o kit contém 32 arquivos:

    text
    docker-compose.yml          les 10 services, leurs ports, leurs volumes, leurs healthchecks
    labo.ps1                    le script de pilotage, Windows
    labo.sh                     le même, bash
    README.md                   le mode d'emploi du kit
    LICENSE  .gitattributes  .gitignore
    api/app.py                  l'API catalogue (FastAPI + prometheus_client)
    api/donnees/cours.json      les 64 cours
    api/Dockerfile  api/requirements.txt
    charge/charge.py            le générateur de trafic
    charge/Dockerfile  charge/requirements.txt
    webhook/webhook.py          le récepteur d'alertes
    webhook/Dockerfile  webhook/requirements.txt
    prometheus/prometheus.yml   les 8 cibles, scrape toutes les 15 s
    prometheus/regles/alertes.yml         les 10 règles d'alerte
    prometheus/regles/enregistrement.yml  les règles d'enregistrement (api:taux_erreurs_5m…)
    alertmanager/alertmanager.yml         le routage vers le webhook
    loki/loki.yml  loki/Dockerfile
    alloy/config.alloy          la collecte des logs Docker → Loki
    grafana/provisioning/datasources/sources.yml       Prometheus, Loki, Alertmanager
    grafana/provisioning/dashboards/tableaux-de-bord.yml
    grafana/provisioning/dashboards/api-catalogue.json
    grafana/provisioning/dashboards/hote-conteneurs.json
    grafana/provisioning/dashboards/journaux-api.json
    modules/01-le-labo/requetes.txt        les requêtes PromQL de ce module
    modules/01-le-labo/requetes-logql.txt  les requêtes LogQL de ce module
    outils/generer-cours.py     le script qui a fabriqué cours.json

    O que é preciso ver: uma pasta por serviço, e uma pasta modules/ onde cada módulo do curso guarda seus arquivos de trabalho. Você não precisa modificar nada até o módulo 3.

  6. Executar a checklist.

    powershell
    .\labo.ps1 prerequis
    bash
    ./labo.sh prerequis

    Na máquina do curso (Windows 11, Docker Desktop, PowerShell 5.1), antes da primeira inicialização:

    text
    
    == Prérequis ==
      ✔ docker : Docker version 29.3.1, build c2be9cc
      ✔ le démon Docker répond
      ✔ docker compose : 5.1.1
      ✔ mémoire disponible pour Docker : 31 Go
      ✔ processeurs : 20
      ✔ port 9090 libre
      ✔ port 9093 libre
      ✔ port 3000 libre
      ✔ port 3100 libre
      ✔ port 12345 libre
      ✔ port 9100 libre
      ✔ port 8080 libre
      ✔ port 8000 libre
      ✔ port 8090 libre
    
    Tout est prêt. Lancez : .\labo.ps1 demarrer

    O que é preciso ver: quatorze marcas de verificação, e a última linha verde. As versões e a memória dependem da sua máquina. A versão bash exibe uma linha extra, ✔ curl : présent, e termina com Lancez : ./labo.sh demarrer. Depois que o labo estiver iniciado, executar prerequis novamente exibirá port 9090 : utilisé par le labo lui-même em vez de libre: isso é normal, e é o que você verá na lição 04.

  7. Se a porta 3000 já estiver ocupada: escolher a porta do Grafana. Defina GRAFANA_PORT antes de prerequis, e mantenha-a definida para demarrer e etat:

    powershell
    $env:GRAFANA_PORT = 3001
    .\labo.ps1 prerequis
    bash
    GRAFANA_PORT=3001 ./labo.sh prerequis

    A checklist então exibe ✔ port 3001 libre no lugar da linha da porta 3000, e o Grafana responderá em http://localhost:3001. Todos os endereços do curso que mencionam a porta 3000 continuam válidos: substitua 3000 por 3001. A variável só existe no terminal atual; se você abrir outro terminal, defina-a novamente.

Se travar

As mensagens abaixo foram provocadas de verdade na máquina do curso.

  • Somente Windows — o PowerShell recusa o script.

    text
    .\labo.ps1 : Impossible de charger le fichier C:\Users\<toi>\lab3\labo.ps1, car l'exécution de
    scripts est désactivée sur ce système. Pour plus d'informations, consultez about_Execution_Policies à l'adresse
    https://go.microsoft.com/fwlink/?LinkID=135170.
        + CategoryInfo          : Erreur de sécurité : (:) [], PSSecurityException
        + FullyQualifiedErrorId : UnauthorizedAccess

    A política de execução padrão do Windows bloqueia scripts não assinados. Permita-os apenas para sua conta:

    powershell
    Set-ExecutionPolicy -Scope CurrentUser RemoteSigned

    Responda O (sim) e execute novamente .\labo.ps1 prerequis. É isso também que labo.ps1 exibe quando você o executa sem argumento.

  • O Docker não está instalado, ou o terminal foi aberto antes da instalação.

    text
    docker : Le terme «docker» n'est pas reconnu comme nom d'applet de commande, fonction, fichier de script ou
    programme exécutable. Vérifiez l'orthographe du nom, ou si un chemin d'accès existe, vérifiez que le chemin d'accès
    est correct et réessayez.

    (docker: command not found no bash.) Feche e reabra o terminal: o PATH não foi recarregado. Se a mensagem persistir, o Docker não está instalado.

  • O daemon não responde. prerequis exibe um X em le démon Docker répond. No Windows e no macOS, o Docker Desktop não foi iniciado, ou ainda está iniciando: espere o ícone ficar estável. Somente Linux nativo — permission denied while trying to connect to the Docker daemon socket: seu usuário não está no grupo docker, ou você não se reconectou depois do usermod; id -nG deve listar docker.

  • A porta 3000 já está ocupada por outro programa. Quando o labo ainda não foi iniciado e outro programa está escutando na porta do Grafana, prerequis exibe o X e o remédio na mesma linha:

    text
      ✘ port 3000 déjà occupé par un autre programme — choisissez un autre port pour Grafana :  $env:GRAFANA_PORT = 3001  puis relancez
    
    Corrigez les points marqués ✘ puis relancez .\labo.ps1 prerequis

    Faça o que a linha diz (etapa 7). Para outra porta ocupada (9090, 8000…), a mensagem é déjà occupé par un autre programme — arrêtez-le ou changez le port dans docker-compose.yml: encontre o programa (Get-NetTCPConnection -LocalPort 9090 no Windows, sudo ss -ltnp | grep 9090 no Linux) e pare-o, ou mude a parte esquerda da porta em docker-compose.yml ("9091:9090").

  • Somente Windows — memória insuficiente. ✘ mémoire pour Docker : 1 Go — il en faut au moins 2 (fichier %UserProfile%\.wslconfig : [wsl2] memory=4GB, puis wsl --shutdown). Faça a etapa 1. Entre 2 e 4 GB, o script exibe um aviso em vez de um X e deixa passar.

  • Git Bash no Windows — os dois scripts funcionam. Na máquina do curso, ./labo.sh prerequis executado a partir do Git Bash dá a mesma checklist que labo.ps1, com a linha ✔ curl : présent extra e as cores exibidas. Você pode então seguir os anexos bash do curso no Windows se preferir esse terminal; a variável se passa então como no Linux: GRAFANA_PORT=3001 ./labo.sh prerequis.

Para lembrar

Este labo exige apenas uma coisa na sua máquina: Docker (Desktop ou Engine, com o plugin Compose, e curl para a versão bash); os dez serviços rodam todos em contêineres, dos quais quatro são construídos na sua máquina na primeira inicialização. Conte com 2 GB de memória no mínimo para o Docker, 4 GB recomendados; no Windows, isso se ajusta em %UserProfile%\.wslconfig seguido de wsl --shutdown. Nove portas precisam estar livres: 9090, 9093, 3000, 3100, 12345, 9100, 8080, 8000 e 8090. O kit se obtém com git clone https://github.com/hrhouma2/aiopsatlas-observabilite-labo-fr.git lab3, depois cd lab3: 32 arquivos, uma pasta por serviço, uma pasta modules/ para o curso. .\labo.ps1 prerequis ou ./labo.sh prerequis é sua checklist: quatorze marcas de verificação (quinze no bash) e Tout est prêt. antes de iniciar. Se a porta 3000 estiver ocupada, GRAFANA_PORT=3001 move o Grafana sem tocar no resto; a variável precisa continuar definida para prerequis, demarrer e etat. Se o PowerShell recusar o script: Set-ExecutionPolicy -Scope CurrentUser RemoteSigned.

Para ir além