Como usar o Docker no Ubuntu: Guia completo de instalação, imagens, Dockerfile e otimização

目次

1. Introdução

O que é Docker?

Docker é uma plataforma que utiliza tecnologia de virtualização baseada em contêineres para desenvolver, distribuir e executar aplicações de forma eficiente. Ao contrário das máquinas virtuais tradicionais (VMs), os contêineres compartilham o kernel do sistema operacional host, permitindo inicialização mais rápida e menor consumo de recursos.

Benefícios de usar Docker no Ubuntu

Ubuntu é uma das distribuições Linux com forte compatibilidade com Docker. As principais razões incluem:

  • Suporte oficial : Docker oferece suporte oficial ao Ubuntu, permitindo instalação fácil através do repositório oficial.
  • Gerenciamento de pacotes estável : O gerenciador de pacotes APT do Ubuntu torna a administração de versões simples.
  • Amplo suporte da comunidade : Ubuntu possui uma grande base de usuários global, facilitando a solução de problemas quando surgem.

O que você aprenderá neste artigo

Este guia explica os tópicos a seguir passo a passo:

  1. Como instalar Docker no Ubuntu
  2. Operações básicas com imagens Docker
  3. Criação de imagens personalizadas usando Dockerfile
  4. Configuração de locale japonês em um contêiner Ubuntu
  5. Otimização e minimização de imagens Docker
  6. Desenvolvimento de aplicações dentro de contêineres Ubuntu
  7. Erros comuns e solução de problemas

O conteúdo é útil tanto para iniciantes quanto para usuários avançados, portanto sinta‑se à vontade para consultá‑lo em qualquer etapa.

2. Instalando Docker no Ubuntu

Instalando Docker usando o repositório oficial

No Ubuntu, você pode instalar Docker facilmente usando o repositório oficial. Siga os passos abaixo para configurar seu ambiente.

1. Remover pacotes Docker existentes

O Ubuntu pode incluir um pacote chamado docker.io, que pode ser uma versão mais antiga. Remova‑o antes de instalar a versão mais recente do Docker.

sudo apt remove docker docker-engine docker.io containerd runc

2. Instalar pacotes necessários

Instale os pacotes de dependência antes da instalação.

sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

3. Adicionar o repositório oficial do Docker

Adicione a chave GPG oficial do Docker e configure o repositório.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

4. Instalar Docker

Após adicionar o repositório, instale o Docker.

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

5. Verificar a instalação

Confira se o Docker foi instalado corretamente exibindo as informações de versão.

docker --version

Configuração inicial após a instalação

1. Iniciar e habilitar o serviço Docker

Inicie o serviço Docker e habilite a inicialização automática na inicialização do sistema.

sudo systemctl start docker
sudo systemctl enable docker

2. Permitir que usuários não‑root executem Docker

Por padrão, apenas o root pode executar Docker. Permita que usuários comuns executem comandos Docker.

sudo usermod -aG docker $USER

Faça logout e login novamente para que as alterações tenham efeito.

3. Testar o funcionamento do Docker

Execute o contêiner hello-world usando uma conta de usuário comum.

docker run hello-world

Se a saída incluir “Hello from Docker!”, a instalação foi bem‑sucedida.

3. Operações básicas de imagens Docker

O que é uma imagem Docker?

Uma imagem Docker funciona como um modelo para criar contêineres. Ao usar uma imagem Docker baseada em Ubuntu, você pode iniciar rapidamente um ambiente Ubuntu.

Baixando imagens Ubuntu do Docker Hub

O Docker Hub oferece diversas imagens Docker oficiais. Para baixar uma imagem Ubuntu, execute:

docker pull ubuntu

Iniciando e parando contêineres

Use a imagem Ubuntu baixada para iniciar um contêiner:

docker run -it ubuntu bash

Isso abre um shell dentro do contêiner Ubuntu, permitindo que você opere dentro dele.

Listar Contêineres

Exibir contêineres em execução:

docker ps

Exibir todos os contêineres, incluindo os parados:

docker ps -a

Parando e Removendo Contêineres

Parar um contêiner em execução:

docker stop [container ID or name]

Remover um contêiner desnecessário:

docker rm [container ID or name]

Gerenciando Imagens Docker

Listar imagens Docker baixadas:

docker images

Remover uma imagem:

docker rmi [image ID]

4. Criando Imagens Personalizadas com Dockerfile

O Que É um Dockerfile?

Um Dockerfile é um arquivo de configuração usado para construir imagens Docker. Com base nas instruções escritas no Dockerfile, você pode criar imagens Docker personalizadas. Isso permite unificar ambientes de desenvolvimento ou criar imagens que incluam pacotes necessários.

Sintaxe Básica do Dockerfile

Um Dockerfile tipicamente inclui os seguintes comandos:

CommandDescription
FROMSpecifies the base image
RUNExecutes commands to build the image
COPYCopies files into the container
WORKDIRSets the working directory
CMDDefault command executed when the container starts
ENTRYPOINTDefines the entry point of the container

Criando uma Imagem Personalizada Baseada em Ubuntu

Siga os passos abaixo para criar uma imagem Docker personalizada baseada em Ubuntu.

1. Criar um Diretório de Trabalho

Primeiro, crie um novo diretório de projeto e mude para ele.

mkdir my-ubuntu-image
cd my-ubuntu-image

2. Criar um Dockerfile

Crie um Dockerfile dentro do diretório e escreva o seguinte conteúdo:

# Base Ubuntu official image
FROM ubuntu:latest

# Maintainer information (optional)
LABEL maintainer="your-email@example.com"

# Update package list and install basic tools
RUN apt update && apt install -y curl vim git

# Set working directory
WORKDIR /workspace

# Default command when the container starts
CMD ["bash"]

3. Construir a Imagem Docker

Construa uma imagem personalizada a partir do seu Dockerfile:

docker build -t my-ubuntu-image .

A opção -t atribui um nome à imagem.

4. Verificar a Imagem

Verifique sua imagem recém-construída:

docker images

5. Executar um Contêiner

Inicie um contêiner a partir da imagem personalizada:

docker run -it my-ubuntu-image

Esta imagem inclui ferramentas como curl e vim.

5. Configurando um Ambiente Japonês em Contêineres Ubuntu

A imagem Ubuntu padrão usa um ambiente em inglês. Para usar japonês, é necessária configuração adicional.

Configurando Localidade Japonesa

Para habilitar exibição e entrada em japonês em um contêiner Ubuntu, instale a localidade japonesa.

1. Instalar Pacotes Necessários

apt update
apt install -y language-pack-ja locales

2. Configurar a Localidade

Gerar e aplicar a localidade:

locale-gen ja_JP.UTF-8
update-locale LANG=ja_JP.UTF-8

3. Aplicar as Configurações

export LANG=ja_JP.UTF-8

Configurando Entrada Japonesa

Para inserir caracteres japoneses no terminal, instale ibus-mozc:

apt install -y ibus-mozc

Se estiver usando aplicativos GUI, adicione as seguintes variáveis de ambiente:

export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus

Usando Aplicativos GUI

Para executar aplicativos GUI dentro de um contêiner Docker, use um servidor X na máquina host.

Execute o contêiner com X11 habilitado:

docker run -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix my-ubuntu-image

6. Otimizando e Minimizando Imagens Docker

Imagens Docker podem ser otimizadas para melhorar a velocidade de inicialização do contêiner e reduzir o uso de armazenamento. Aqui estão várias técnicas para criar imagens leves.

Como Criar uma Imagem Leve Baseada em Ubuntu

A imagem padrão ubuntu:latest é relativamente grande. Usar uma opção mais leve como ubuntu:minimal ajuda a reduzir o tamanho do contêiner.

FROM ubuntu:minimal

Outra opção é usar Alpine Linux, que é significativamente menor que o Ubuntu.

FROM alpine:latest
RUN apk add --no-cache bash curl

Usar Alpine pode reduzir o tamanho da imagem em várias centenas de megabytes.

Reduzindo o Tamanho da Imagem Removendo Arquivos Desnecessários

Você pode reduzir o tamanho da imagem excluindo arquivos de cache desnecessários criados pelo apt-get.

RUN apt update && apt install -y curl vim \
    && apt clean \
    && rm -rf /var/lib/apt/lists/*

Em particular, o comando rm -rf /var/lib/apt/lists/* remove as listas de pacotes e dados não utilizados.

Usando Builds Multi-Estágio

Builds multi‑estágio permitem usar ferramentas apenas durante o processo de construção, mantendo a imagem final leve.

FROM ubuntu as builder
RUN apt update && apt install -y gcc

FROM ubuntu:minimal
COPY --from=builder /usr/bin/gcc /usr/bin/gcc

Dessa forma, você evita incluir ferramentas de desenvolvimento na imagem final, resultando em uma pegada muito menor.

7. Exemplo Prático: Desenvolvimento de Aplicações em Contêineres Ubuntu

Esta seção apresenta como configurar ambientes de desenvolvimento dentro de contêineres Ubuntu.

Configurando um Ambiente de Desenvolvimento Python

Crie o seguinte Dockerfile para configurar um ambiente de desenvolvimento Python em um contêiner Ubuntu:

FROM ubuntu:latest
RUN apt update && apt install -y python3 python3-pip
CMD ["python3"]

Construa a imagem e execute o contêiner:

docker build -t python-dev .
docker run -it python-dev

Este ambiente permite usar o comando python3 para desenvolvimento e teste de scripts.

Configurando um Ambiente de Desenvolvimento Node.js

Para configurar um ambiente de desenvolvimento Node.js, use o seguinte Dockerfile:

FROM ubuntu:latest
RUN apt update && apt install -y nodejs npm
CMD ["node"]

Construa e execute o contêiner:

docker build -t node-dev .
docker run -it node-dev

Este ambiente permite a execução de JavaScript e o desenvolvimento de aplicações com o comando node.

8. Perguntas Frequentes & Solução de Problemas

Usar Docker pode gerar vários problemas. Abaixo estão perguntas comuns e soluções típicas.

Diferença Entre Docker e Máquinas Virtuais

  • Docker: Compartilha o kernel do SO host, tornando‑o leve com inicialização rápida de contêineres.
  • Máquinas Virtuais (VMs): Cada VM inclui seu próprio SO, resultando em maior uso de recursos e inicialização mais lenta.

Docker se destaca na otimização de recursos e é adequado para ambientes de desenvolvimento e implantação automatizada.

Persistindo Dados em Contêineres Ubuntu

Para reter dados mesmo após um contêiner ser interrompido, use montagens de volume:

docker run -v my_data:/data ubuntu

Mesmo que o contêiner seja excluído, os dados armazenados no volume my_data podem ser reutilizados.

Erros Comuns e Soluções

1. Erro permission denied

Se você vir permission denied ao tentar executar o Docker, seu usuário pode não pertencer ao grupo docker.

Adicione o usuário ao grupo Docker:

sudo usermod -aG docker $USER

Desconecte‑se e faça login novamente para aplicar a alteração.

2. Erro image not found

Se uma imagem foi removida do Docker Hub, especifique uma tag mais recente ao fazer pull:

docker pull ubuntu:22.04

Especificar uma versão explícita garante que a imagem correta seja obtida.