Se você está aqui, provavelmente tem um Raspberry Pi 4 na mão e está doido para começar a brincar com ele. Acertei?
Mas… Perai, nem sei o que é Raspberry Pi
Se voce nao sabe do que estou falando, vamos primeiro entender o que é Raspberry Pi. Trata-se de um microcomputador do tamanho de um cartão de crédito, mas não se engane com seu tamanho, custa quase nada e é super versátil. . Ele é incrível para aprender programação, criar protótipos e executar diversos projetos DIY (faça você mesmo).
Resumindo: é poderoso o suficiente para rodar diversas aplicações, ainda mais na versao 4 com uma RAM melhorada, portas USB mais rápidas e opções de armazenamento melhoradas, é a plataforma perfeita para experimentos.
Mas se ainda assim, voce deseja conhecer mais ainda sobre o que é o Raspberry Pi, sua historia e modelos, vou deixar esse video da FILIPEFLOP que achei super completo:
Preparando o Terreno: Raspberry Pi OS
Para que tudo funcione perfeitamente, precisamos de um sistema operacional.
O Raspberry Pi OS é a escolha oficial, gratuita, recomendada e para instalar ele, iremos utilizar uma ferramenta chamada Raspberry Pi Imager.
Mas porque iremos utilizar Raspberry Pi Imager?
Interface Amigável: Mesmo para usuários menos experientes, a ferramenta é muito intuitiva.
Diversidade de Sistemas: Além do Raspberry Pi OS, você pode escolher outras distros diretamente da interface, como por exemplo: emulador de games retrô, sistemas de media center, ubuntu e varios outros.
Verificação Automática: Ele verifica a integridade da imagem após a gravação no cartao SD, garantindo uma instalação sem falhas.
Atualizado: O Imager sempre oferece a versão mais recente do sistema operacional.
Customização: Quando voce escolhe o Raspberry Pi OS, é habilitado para voce as opcoes avançadas, onde nele voce pode customizar o SO para ele já subir com configuracoes escolhidas por voce, como por exemplo: hostname, habilitar o ssh, configurar usuario e senha e inclusive, já deixar configurado o SSID e senha do seu WIFI. (Em meu caso, eu sempre dou preferencia à conexão cabeada).Ou seja, com essas configurações, voce não precisa nem ligar teclado e monitor no seu raspberry pi, vai precisar apenas do IP, que em nosso caso, voce pode consultar no DHCP server da sua rede.
Agora que falei demais, vamos ao passo-a-passo:
Acesse o site oficial do Raspberry Pi OS AQUI e faça o download do Raspberry Pi Imager para sua plataforma PC ou Mac.
Insira o cartão microSD no leitor do seu computador e inicie o Raspberry Pi Imager. Veja que em Operating System existem várias opções do Raspberry Pi OS. Abaixo segue o detalhe de cada uma:
Raspberry Pi OS Lite:
Esta é a versão mais enxuta do Raspberry Pi OS. Ela não possui uma interface gráfica de usuário (GUI) e é gerenciada inteiramente através da linha de comando.
Ideal para:
Projetos que requerem uma instalação mínima.
Usuários avançados que preferem a linha de comando.
Situações em que a GUI é desnecessária ou pode consumir recursos computacionais.
Raspberry Pi OS (with desktop environment):
Esta versão vem com a GUI PIXEL, uma interface gráfica leve e amigável que torna a interação com o Raspberry Pi mais intuitiva.
Ideal para:
Usuários que querem uma experiência de “desktop” com o Raspberry Pi.
Projetos educativos.
Desenvolvimento e prototipagem que pode se beneficiar de ferramentas GUI.
Uso diário e navegação básica na web.
Raspberry Pi OS Full (with desktop environment and recommended applications):
Além do desktop PIXEL, esta versão inclui software adicional pré-instalado, como o LibreOffice e alguns outros utilitários e jogos educativos.
Ideal para:
Ambientes educativos, onde os softwares incluídos podem ser usados para ensino.
Usuários que desejam uma experiência mais “completa” diretamente após a instalação.
Situações em que o tempo de configuração precisa ser minimizado, pois vem com várias ferramentas já instaladas.
No nosso caso, eu sempre gosto de utilizar a versão Raspberry Pi OS Lite, pois sempre utilizo o Raspberry Pi para rodar aplicações que são acessadas remotamente ou via web no navegador e dessa forma, eu economizo recursos de CPU e RAM da placa.
Em Storage, selecione seu cartão de memória.
Antes de clicar em WRITE, vamos customizar nossa instalação, clicando no botão da engrenagem, e preencher as opções abaixo:
Set hostname: VMB-DKR01 (fique a vontade para escolher de acordo com a nomenclatura que voce adota)
Enable SSH: Use password authentication
Set username and password: é uma boa pratica de segurança mudar.
OBS: Caso voce não escolha, por padrão o usuário e senha será: pi/raspberry
Set locale settings:
Time zone: America/Fortaleza
Keyboard layout: br
Pronto! Agora é só clicar em WRITE, clicar em YES para confirmar que todos os dados do microSD serão apagados e aguardar o assistente concluir e ejetar o cartão microSD.
Agora basta inserir o cartão microSD no seu Raspberry Pi e ligá-lo.
E para deixar ainda mais claro, também achei um video curto de 45 segundos da instalação, feito pela própria Raspberry Pi Foundation.
Acessando Remotamente via SSH
Lembrem-se que através do Raspberry Pi Imager, nós ja deixar configurados na imagem de instalação o acesso via ssh, ou seja, tudo que você precisa é descobrir qual o IP que seu Raspberry Pi pegou do DHCP da sua rede, e acessar remotamente via ssh. Você pode usar o cliente ssh de sua preferencia, caso você esteja usando Windows, os clientes mais populares são o PuTTY e o MobaXterm, caso voce esteja no MacOS, o próprio terminal nativamente já possui o cliente ssh, porém eu particularmente gosto de usar o iTerm2.
ssh leandro@192.168.68.135
Atualizando o Sistema
sudo apt update -y sudo apt upgrade -y sudo reboot now
O primeiro comando atualiza a lista de pacotes disponíveis do repositório.
O segundo comando efetivamente instala as atualizações encontradas.
O ultimo comando reinicia o sistema, depois de tantos upgrades, é importante reiniciar para efetivar as mudanças e o SO subir com as atualizações ja aplicadas.
Instalando o Docker
Antes de sairmos instalando esse tal de Docker, é interessante explicar de forma rápida e simples o que é o Docker.
Embora quando falamos de Docker geralmente pensamos que ele seja consumido apenas por Dev, eu como vindo da area de Infra utilizo com facilidade, como por exemplo a instalação de aplicações de casa inteligente que possuem versões em Docker, entre elas o Homebridge, Home Assistant, etc… Na qual irei ainda escrever sobre isso aqui no blog.
Para finalizar o assunto da explicação, é muito comum o pessoal nao entender quais as diferenças entre o que é um conteiner Docker de uma VM (virtual machine).
Vamos fazer algumas comparações:
Isolamento: Tanto VMs quanto contêineres Docker oferecem isolamento. Porém a VM executa um Sistema Operacional completo, com seu próprio kernel, enquanto um contêiner Docker compartilha o kernel do Sistema Operacional, mas isola o espaço do usuário. Ou seja, em uma VM é possivel ter diversos conteiners Docker.
Tamanho e Velocidade: Contêineres Docker tendem a ser mais leves e rápidos do que VMs. Por não necessitarem de um sistema operacional completo, os contêineres ocupam menos espaço e iniciam mais rapidamente.
Portabilidade: Com Docker, podemos empacotar uma aplicação e suas dependências em um contêiner e, depois, mover esse contêiner para diferentes ambientes sem preocupações de compatibilidade.
Recursos: VMs necessitam de mais recursos do computacionais, pois cada uma tem seu próprio Sistema Operacional. Contêineres, por outro lado, compartilham o mesmo Sistema Operacional e, portanto, consomem menos recursos.
Resumindo, enquanto as máquinas virtuais virtualizam o hardware para executar múltiplos sistemas operacionais, o Docker virtualiza o sistema operacional, permitindo a execução de múltiplos contêineres com aplicações isoladas no mesmo OS.
E agora depois de todo essa Visão Geral, vamos iniciar a instalação do Docker em nossa placa Raspberry Pi 4.
Um item muito importante, que voce verá pouco em outros tutoriais na internet, é uma pré-configuracao necessária no Raspberry Pi OS, e claro, preciso explicar mais umas coisas para ficar claro.
Por padrão, o suporte à alocação e limitação de memória via cgroups pode não estar habilitado no Raspberry Pi. O Docker, especialmente quando trabalha com contêineres que têm limites de memória, precisa dessa funcionalidade.
E o que vem a ser cgroups?
Control Groups ou apenas cgroups é uma funcionalidade do kernel do Linux que permite limitar e isolar o uso de recursos (como CPU, memória, disco, etc.) de processos e grupos de processos. Esta funcionalidade é essencial para o funcionamento do Docker, pois é ela que permite isolar e controlar os recursos usados por contêineres.
Se você não realizar essa configuração e tentar usar funcionalidades relacionadas a limites de memória no Docker, pode encontrar erros ou comportamentos inesperados. Em resumo, sem essa configuração, você não estará utilizando o Docker em sua capacidade plena no Raspberry Pi, especialmente nos nossos cenários onde o gerenciamento preciso da memória é crucial.
Por fim, vamos colocar a mão na massa.
Achei mais interessante informar os comandos que voce deve executar no seu Raspberry Pi 4 e explicar os mesmos de forma fácil.
A primeira coisa a se fazer após sua placa dar boot é conectar remotamente nela via ssh, ai voce escolhe o client de sua preferencia (putty, MobaXterm, etc…)
sudo nano /boot/cmdline.txt cgroup_enable=memory sudo reboot now
Para validarmos se o cgroups referente a memória foi habilitado após o reboot, podemos usar qualquer um dos comandos abaixo.
mount | grep cgroup | grep memory dmesg | grep cgroup
E agora, vamos de fato instalar o Docker.
sudo curl -sSL https://get.docker.com | sh
Detecta a distro e versão do Linux do seu sistema.
Adiciona a chave GPG do Docker para garantir a autenticidade dos pacotes do Docker.
Adiciona o repositório do Docker à configuração do gerenciador de pacotes do seu sistema.
Atualiza as listas de pacotes para incluir o repositório do Docker.
Instala os pacotes necessários para a instalação do Docker, como docker-ce e docker-ce-cli.
Inicia o serviço Docker.
Bom demais não é?
Após completar tudo, verifica o serviço do Docker, ele precisa está em running:
sudo systemctl status docker

sudo systemctl enable docker

Para isso, execute o comando abaixo:
sudo usermod -aG docker leandro

groups leandro

Eu prefiro sempre reiniciar:
sudo reboot now

docker version
Instalando o Docker Compose
Antes vamos entender o que vem a ser isso.
O Docker Compose é uma ferramenta do Docker que facilita a definição e o gerenciamento de aplicações multi-contêiner. Em vez de iniciar, configurar e conectar contêineres individualmente, o Docker Compose permite que você defina toda a sua aplicação, com todos os seus serviços, em um único arquivo. Depois, com um único comando, você pode iniciar todos os serviços definidos.
Vamos imaginar que você precisa de uma aplicação web que requer um servidor web, um banco de dados e um servidor de cache. Em vez de criar e gerenciar três contêineres separados, você pode usar o Docker Compose para definir e gerenciar todos esses serviços simultaneamente, bastando para isso criar um arquivo de configuração YAML, onde dentro dele voce define e configura esses três contêiners juntos.
Em outros artigos que irei abordar neste blog, isto vai ficar mais fácil de entender. Por hora quero focar mais em pequenos conceitos e na instalacao, para evitar que o artigo fique muito grande.
Agora segue a serie de comandos com suas explicacoes:
Cria um diretório para plugins CLI do Docker. Ele será usado para armazenar o binário do Docker Compose.
sudo mkdir -p /usr/local/lib/docker/cli-plugins/

Veja que estamos baixando na arquitetura para o Raspberry Pi 4, ou seja, aarch64:
sudo curl -SL https://github.com/docker/compose/releases/download/v2.22.0/docker-compose-linux-aarch64 -o /usr/local/lib/docker/cli-plugins/docker-compose

sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose

docker compose version

Finalizando
Com o Docker e o Docker Compose agora instalados e operando em seu Raspberry Pi 4, abrimos as portas para um gigantesco mundo da contêinerização. Este artigo foi detalhadamente elaborado para garantir que você não apenas instale essas ferramentas, mas também compreenda o que esta instalando, pelo menos uma visao geral.
Porém, estamos apenas começando! O poder do Docker no Raspberry Pi vai muito além, e prometo trazer novos insights e aplicações práticas para potencializar ainda mais nossa infraestrutura. Fique atento e vamos desvendar as maravilhas que essa area que so cresce mais e mais tem a nos oferecer.