CodeGym /Cursos /Docker SELF /Escolha da imagem base

Escolha da imagem base

Docker SELF
Nível 14 , Lição 1
Disponível

7.1 Imagem Base

As imagens base têm um papel importante na criação de imagens Docker, porque elas fornecem o ponto de partida pra build e definem o ambiente em que sua aplicação vai rodar. Fazer a escolha certa e configurar as imagens base de forma adequada pode impactar muito a performance, tamanho e segurança da imagem final. Nessa aula, a gente vai ver como escolher e configurar imagens base pro Docker.

Imagem base (ou imagem de base) — é uma imagem Docker usada como a camada inicial pra criar uma nova imagem Docker. Ela pode incluir um sistema operacional mínimo, ferramentas e bibliotecas necessárias ou até ser vazia (imagem scratch). A escolha da imagem base define quais recursos e pacotes estarão disponíveis no seu container por padrão.

Escolhendo a imagem base

Na hora de escolher a imagem base, você tem que levar em conta alguns fatores:

  1. Tamanho da imagem: Imagens menores carregam mais rápido, ocupam menos espaço no disco e podem acelerar o deploy das aplicações.
  2. Suporte e atualizações: Usar imagens oficiais com atualizações regulares dá mais segurança, corrige vulnerabilidades e garante mais estabilidade.
  3. Compatibilidade: A imagem base precisa incluir as bibliotecas e dependências necessárias pra sua aplicação funcionar direitinho.

Imagens base populares

1. Alpine Linux

Uma imagem super leve, com cerca de 5 MB. Ela é perfeita pra aplicações que precisam de um sistema operacional mínimo. Mas os devs devem considerar que o Alpine não vem com várias bibliotecas padrão, então pode ser necessário configurar algumas coisas extras pra certos aplicativos.

dockerfile

FROM alpine:3.12

2. Debian/Ubuntu

Imagens mais completas, com um monte de ferramentas e bibliotecas. Elas são ideais pra aplicações mais complexas que precisam de um ambiente completo ou de uma biblioteca Linux padrão bem conhecida.

dockerfile

FROM ubuntu:20.04 

3. Imagens Oficiais de Linguagens

Imagens oficiais pra linguagens de programação, tipo Node.js, Python, Ruby e outras. Essas imagens já vêm com o ambiente necessário pra desenvolver e rodar aplicações na linguagem correspondente, o que facilita a configuração.

dockerfile

FROM node:14 

7.2 Configurando a imagem base

Depois de escolher a imagem base, é necessário configurá-la de acordo com os requisitos do seu aplicativo. A configuração inclui a instalação de pacotes necessários, a cópia dos arquivos do aplicativo e a configuração do ambiente.

Exemplo: Configuração da imagem base baseada no Alpine Linux

dockerfile


# Usando a imagem base Alpine Linux
FROM alpine:3.12
        
# Instalando os pacotes necessários
RUN apk add --no-cache python3 py3-pip
        
# Definindo o diretório de trabalho
WORKDIR /app
        
# Copiando os arquivos do aplicativo
COPY . .
        
# Instalando as dependências
RUN pip3 install -r requirements.txt
        
# Especificando o comando para iniciar o aplicativo
CMD ["python3", "app.py"]

Neste exemplo, a imagem base alpine:3.12 é usada, os pacotes necessários são instalados, os arquivos do aplicativo são copiados e as dependências são configuradas. O comando final alpine:3.12 especifica como executar o aplicativo.

Exemplo: Configuração da imagem base baseada no Ubuntu

dockerfile


# Usando a imagem base Ubuntu
FROM ubuntu:20.04
        
# Atualizando e instalando os pacotes necessários
RUN apt-get update && apt-get install -y \
    python3 \
    python3-pip \
    && rm -rf /var/lib/apt/lists/*
        
# Definindo o diretório de trabalho
WORKDIR /app
        
# Copiando os arquivos do aplicativo
COPY . .
        
# Instalando as dependências
RUN pip3 install -r requirements.txt
        
# Especificando o comando para iniciar o aplicativo
CMD ["python3", "app.py"] 

Este Dockerfile usa a imagem ubuntu:20.04 e instala Python e pip. Depois, ele copia os arquivos do aplicativo e configura as dependências, semelhante ao exemplo anterior.

7.3 Melhores práticas

Como escolher e configurar corretamente as imagens base:

1. Escolha imagens mínimas: comece com as menores imagens que atendem aos requisitos do seu aplicativo. Isso reduz o tamanho final da imagem e aumenta a segurança.

2. Não instale pacotes desnecessários: instale apenas as dependências realmente necessárias para seu aplicativo. Isso reduz o tamanho da imagem e diminui o número de possíveis vulnerabilidades.

3. Limpe o cache dos gerenciadores de pacotes: após instalar os pacotes, remova os arquivos temporários e o cache para deixar a imagem mais leve.

dockerfile


RUN apt-get update && apt-get install -y python3 python3-pip && rm -rf /var/lib/apt/lists/*

4. Use multi-stage build: isso permite dividir as etapas de compilação e execução, ajudando a criar imagens mais leves e seguras.

Terminal

        
# Etapa de compilação
FROM node:14 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
        
# Etapa final
FROM nginx:alpine
COPY --from=builder /app/build /usr/share/nginx/html

5. Atualize regularmente as imagens: use versões recentes das imagens base para incluir as últimas correções de segurança e atualizações.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION