Tutorial como instalar Docker no Raspberry Pi

Objetivos

  • Entender o que é o software Docker e sua proposta
  • Prover os passos necessários para instalar o Docker no Raspberry Pi

Setup

Para que seja possível seguir este tutorial, é necessário que tenha os itens disponíveis:

  • Raspberry Pi
  • Fonte de alimentação dimensionada com corrente mínima para seu Raspberry Pi
  • Unidade de armazenamento: cartão SD, pen drive, disco rígido USB ou SSD USB.
  • Conexão com internet (wi-fi ou cabeada)

O que é o software Docker?

O Docker é também uma plataforma que facilita a criação, implantação e execução de aplicativos em containers. Um container é um encapsulamento leve e independente que pode conter todo o código e as bibliotecas necessárias para executar um aplicativo, incluindo o próprio aplicativo. Desta forma, o Docker permite empacotar um aplicativo juntamente com suas dependências em um container, garantindo que ele funcione consistentemente em outros ambientes, seja em um ambiente de desenvolvimento, teste ou produção. É interessante destacar que um container pode não funcionar em todos os ambientes, é necessário verificar a compatibilidade do software encapsulado com arquitetura x86 e arm, porém há formas de emular a compatibilidade.

Aqui estão algumas características e conceitos-chave relacionados ao Docker:

  1. Containers: Os containers são unidades isoladas que incluem o aplicativo, suas bibliotecas e dependências, tornando-os portáteis e independentes do ambiente em que são executados. Eles são mais leves que máquinas virtuais e compartilham o kernel do sistema operacional com o host, o que os torna mais eficientes.
  2. Imagens: As imagens do Docker são modelos somente leitura que contêm instruções para criar um container. Você pode pensar nelas como um plano de construção para um container. Imagens podem ser compartilhadas e versionadas, o que facilita a colaboração e a implantação consistente de aplicativos.
  3. Dockerfile: Um Dockerfile é um arquivo de configuração que define como uma imagem do Docker deve ser construída. Ele especifica quais bibliotecas e dependências devem ser instaladas no container e como o aplicativo deve ser configurado.
  4. Orquestração: O Docker pode ser usado em conjunto com ferramentas de orquestração, como o Kubernetes, para gerenciar a implantação e o dimensionamento de aplicativos em containers em ambientes de produção. Essas ferramentas permitem que você automatize tarefas como balanceamento de carga, escalabilidade automática e recuperação de falhas.
  5. Docker Hub: É um repositório público de imagens do Docker, onde você pode encontrar imagens prontas para uso em uma ampla variedade de aplicativos e serviços.
  6. Isolamento: Os contêineres Docker fornecem um alto grau de isolamento entre aplicativos, o que significa que eles não interferem uns nos outros e não afetam o sistema host.
  7. Portabilidade: Como os containers encapsulam todas as dependências necessárias, eles são altamente portáteis. Você pode criar um container em um ambiente de desenvolvimento e executá-lo em qualquer lugar que tenha o Docker instalado.

Em resumo, o Docker simplifica o processo de desenvolvimento, implantação e gerenciamento de aplicativos, tornando-os mais eficientes, escaláveis e consistentes em diferentes ambientes. É amplamente utilizado na indústria de desenvolvimento de software para criar e distribuir aplicativos de forma confiável e rápida.

Passo a passo de como instalar o Docker no Raspberry Pi

Passo 1 – Conexão no raspberry

Caso esteja utilizando seu Raspberry de forma “headless”, basta conectar ao mesmo por SSH. É necessário saber o endereço IP do seu Raspberry, neste exemplo vamos adotar o usuário de login como “viniciuspaes” e o IP sendo 192.168.1.100:

ssh viniciuspaes@192.168.1.100

Passo 2 – Atualização de software do Raspberry

Utilize o comando abaixo para realizar update da lista de pacotes que podem ser atualizados e em seguida realizar o upgrade destes:

sudo apt update && sudo apt upgrade

Instalar Docker no Raspberry Pi - atualizando primeiro o sistema operacional
Instalar Docker no Raspberry Pi - sistema operacional atualizado

Passo 3 – Remover softwares que podem gerar conflitos

Caso tenha instalado o docker anteriormente pelo gerenciador de pacotes apt, é possível que cause conflitos de instalação. O recomendado é instalar diretamente pelo repositório oficial do Docker, para ter acesso as versões mais atuais. Com o comando abaixo, vamos procurar por diversos pacotes relacionados ao docker e solicitar a remoção, caso estejam instalados pelo apt:

for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done

Instalar Docker no Raspberry Pi - remover pacotes para evitar conflitos
Instalar Docker no Raspberry Pi - remover pacotes para evitar conflitos - finalizado

Passo 4 – Download do script oficial de instalação do Docker e execução

Neste passo, vamos utilizar o Curl para realizar o download do script de instalação do Docker:

curl -fsSL https://get.docker.com -o get-docker.sh

Agora precisamos executar o script com o comando:

sudo sh get-docker.sh

Instalar Docker no Raspberry Pi - download script de instalação docker
Instalar Docker no Raspberry Pi - execução script de instalação docker
Instalar Docker no Raspberry Pi - execução script de instalação docker - finalizado

Passo 5 – Adicionar usuário não privilegiado para ter permissão de execução do Docker.

Neste exemplo, vou utilizar o usuário viniciuspaes, adicionando o mesmo no grupo do Docker, desta forma este usuário poderá executar o docker e gerenciar os containers.

sudo usermod -aG docker viniciuspaes

Instalar Docker no Raspberry Pi - adicionar usuário ao grupo do docker

Passo 6 – Reiniciar Conexão ao Raspberry

Uma etapa necessária é realizar o logout e posterior login no seu raspberry, para que as modificações de permissão do grupo do seu usuário tenham efeito. Caso tenha formatado o seu raspberry do zero para seguir este tutorial, provavelmente o sistema operacional também deve pedir para que realize a reinicialização. Então é recomendado que utilize o comando para reiniciar o raspberry pi:

sudo reboot now

Passo 7 – Nova conexão e verificar versão do Docker instalado

Realize novamente a conexão SSH ao seu raspberry após a reinicialização, caso esteja com um setup “headless”. Agora podemos ver a versão do Docker instalado com o comando:

docker version

Instalar Docker no Raspberry Pi - verificar versão do docker instalada

Instalar Docker no Raspberry Pi - verificar versão do docker instalada - resultado

Passo 8 – Testar instalação do docker com execução da imagem de hello-world

Para finalizar a instalação do Docker é interessante testar a mesma executando a imagem de hello-world. Vamos então utilizar o comando:

docker run hello-world

Tudo certo! Caso tenha sucesso na execução da imagem de hello-world o docker foi instalado e configurado corretamente. Caso tenha algum erro, interessante verificar se seu usuário tem privilégio de execução do Docker, igual configuramos no passo 5. Se ainda tiver dúvidas, você pode testar a execução do Docker com o comando “sudo”, para ter certeza que não é um problema de privilégio de execução.

Instalar Docker no Raspberry Pi - executar imagem de teste hello-world do docker

Instalar Docker no Raspberry Pi - executar imagem de teste hello-world do docker - resultado

Lista de comandos úteis para utilização do Docker

Fazer o download de uma imagem de um container

Você pode buscar por imagens prontas diretamente no site do docker hub. No exemplo do comando abaixo, vamos realizar somente o download da imagem oficial do nginx:

docker pull nginx

docker pull nginx

Criar um container a partir de uma imagem

O comando docker run permite iniciar um container a partir de uma imagem. No exemplo do comando abaixo, vamos criar um container que contém a instalação do servidor de páginas nginx:

docker run nginx

Ao executar o comando, caso o docker não encontre a imagem localmente, ele irá buscar a mesma diretamente no docker hub e irá criar o container. Mas caso já tenha feito o download da imagem com o comando docker pull, o container é criado mais rapidamente, pois não precisa realizar o download da mesma.

O problema do comando acima, é que o terminal fica bloqueado na execução. Como opção, podemos passar por referência o prefixo -d, para que o container fique em funcionamento em segundo plano.

docker run -d nginx

O problema do comando acima é que não mapeamos a porta de execução do container. Como o nginx pode funcionar como um servidor de páginas, para que seja possível testar o funcionamento, é interessante que a porta http seja mapeada para o host. Podemos então mapear a porta do host para o container com o prefixo -p [portaHost]:[portaContainer]. Neste exemplo, vamos mapear a porta 8080 do host para ser redirecionada para a porta 80 do Container:

docker run -d -p 8080:80 nginx

docker run nginx

docker run -d nginx

docker run -p 8080:80 -d nginx

Nginx Docker Container Running

Verificar os containers em funcionamento

Para verificar quais container estão ativos, podemos utilizar o comando:

docker ps

Neste exemplo, verificamos 2 containers sendo executados. Ambos os containers utilizam a imagem oficial do nginx:

CONTAINER ID IMAGE COMMAND                CREATED       STATUS       PORTS                                 NAMES
58a23436fc0e nginx "/docker-entrypoint.…" 4 minutes ago Up 4 minutes 0.0.0.0:8080->80/tcp, :::8080->80/tcp festive_cori
c46cd9b051a9 nginx "/docker-entrypoint.…" 7 minutes ago Up 7 minutes 80/tcp                                pensive_carson

docker ps

Parar e remover um container

Vamos remover o container da imagem do nginx que esquecemos de mapear a porta externa do host. Olhando a saída do Docker ps, temos o ID do container que queremos remover. Neste caso o ID é:

c46cd9b051a9

Não é possível remover um container que está em funcionamento, então primeiro precisamos parar o container com o comando:

docker stop c46cd9b051a9

Em seguida podemos proseguir com a remoção do container:

docker rm c46cd9b051a9

docker stop

docker rm

Entrar dentro de um container e executar comandos

Caso precise entrar dentro do container que possui ID “58a23436fc0e” para executar algum comando:

docker exec -it 58a23436fc0e /bin/bash

No comando acima, executamos o bash dentro do container. Se o comando acima não funcionar, é possível que a imagem que esteja utilizando não ter o bash. Para sair do container, lembre-se de digitar “exit”.

docker exec -it ID /bin/bash

Listar as imagens de containers que já fez download

Caso queira verificar quais imagens de containers já fez download e estão disponíveis em seu computador, utilize o comando:

docker images
REPOSITORY  TAG    IMAGE ID     CREATED      SIZE
nginx       latest 91582cfffc2d 38 hours ago 192MB
hello-world latest b038788ddb22 4 months ago 9.14kB

docker images

Considerações Finais

A instalação do Docker no Raspberry Pi é bem simples e pode ser realizada com poucos passos. É um excelente setup para começar a aprender a utilizar o docker e gerenciar aplicativos ou projetos pessoais na sua rede local. Os principais comandos de utilização do Docker também foram listados

Caso tenha dúvidas sobre a instalação ou execução do Docker, basta escrever aí nos comentários!

Vinicius Paes
Visão Geral sobre Privacidade (Privacy Overview)

Este site utuliza "cookies" para que possamos oferecer uma melhor experiência de usuário. As informações dos "cookies" são armazenadas em seu navegador e executam funções como reconhecê-lo quando você retorna ao nosso site e ajudar nossa equipe a entender quais seções do site você considera mais interessantes e úteis.