Guia de Introdução ao Docker: Comece Rapidamente a Contentorizar a Sua Aplicação

2/18/2026
7 min read
```html

Guia de Introdução ao Docker: Comece Rapidamente a Contentorizar a Sua Aplicação

O Docker tornou-se uma parte indispensável do desenvolvimento e implementação de software moderno. Apesar da discussão avassaladora em torno do Kubernetes, o Docker continua a ser a ferramenta preferida de muitas empresas para construir, testar e implementar aplicações. Este artigo irá guiá-lo rapidamente através do Docker, compreender os seus conceitos principais e fornecer um exemplo prático para o ajudar a começar a contentorizar a sua aplicação.

Conceitos Principais do Docker

Antes de começar a praticar, é essencial compreender alguns dos conceitos principais do Docker:

  • Imagem (Image): Uma imagem é um modelo somente de leitura que contém tudo o que é necessário para executar uma aplicação: código, ambiente de tempo de execução, ferramentas de sistema, bibliotecas e dependências. Semelhante a uma imagem de máquina virtual, mas mais leve.
  • Contentor (Container): Um contentor é uma instância em execução criada a partir de uma imagem. É uma instância de tempo de execução de uma imagem, que contém a aplicação e todas as suas dependências. Os contentores estão isolados uns dos outros, com os seus próprios sistemas de ficheiros, processos e espaço de rede.
  • Docker Hub: O Docker Hub é um repositório de imagens público, onde pode descarregar imagens pré-construídas ou carregar as suas próprias imagens. Semelhante ao GitHub, mas especializado em imagens Docker.
  • Dockerfile: Um Dockerfile é um ficheiro de texto que contém todas as instruções para construir uma imagem Docker. Ao escrever um Dockerfile, pode automatizar o processo de criação de imagens.
  • Docker Compose: O Docker Compose é uma ferramenta para definir e executar aplicações Docker multi-contentor. Permite-lhe configurar os serviços da aplicação utilizando um ficheiro YAML e, em seguida, iniciar ou parar todos os serviços com um único comando.

Instalação do Docker

Primeiro, precisa de instalar o Docker. O Docker fornece pacotes de instalação para vários sistemas operativos. Visite o site oficial do Docker e siga as instruções correspondentes para instalar.

Após a instalação, pode verificar se o Docker foi instalado corretamente executando o comando docker --version.

Contentorizar uma Aplicação Python Simples

Vamos criar uma aplicação Python simples e contentorizá-la usando o Docker.

1. Criar a Aplicação Python

Crie um ficheiro chamado app.py com o seguinte código:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
 return "Hello, Docker!"

if __name__ == "__main__":
 app.run(debug=True, host='0.0.0.0')

Esta aplicação Flask simples irá retornar "Hello, Docker!" no caminho raiz /.

2. Criar o ficheiro requirements.txt

A aplicação depende da biblioteca Flask, precisamos de criar um ficheiro requirements.txt para declarar estas dependências.

Flask

3. Criar o Dockerfile

Crie um ficheiro chamado Dockerfile e adicione o seguinte conteúdo:

# Usar a imagem oficial do Python como imagem base
FROM python:3.9-slim-buster

# Definir o diretório de trabalho
WORKDIR /app

# Copiar o ficheiro requirements.txt para o diretório de trabalho
COPY requirements.txt .

# Instalar as dependências
RUN pip install --no-cache-dir -r requirements.txt
# Copiar o código do aplicativo para o diretório de trabalho COPY app.py . # Expor a porta 5000 EXPOSE 5000 # Definir o comando de inicialização CMD ["python", "app.py"] ``` **Explicação do Dockerfile:** * `FROM python:3.9-slim-buster`: Especifica a imagem base como uma versão slim do Python 3.9. * `WORKDIR /app`: Define o diretório de trabalho dentro do contêiner como `/app`. * `COPY requirements.txt .`: Copia o arquivo `requirements.txt` do diretório atual para o diretório `/app` do contêiner. * `RUN pip install --no-cache-dir -r requirements.txt`: Executa o comando `pip` dentro do contêiner para instalar as dependências especificadas no arquivo `requirements.txt`. O parâmetro `--no-cache-dir` pode reduzir o tamanho da imagem. * `COPY app.py .`: Copia o arquivo `app.py` do diretório atual para o diretório `/app` do contêiner. * `EXPOSE 5000`: Declara que o contêiner estará ouvindo na porta 5000. * `CMD ["python", "app.py"]`: Define o comando a ser executado quando o contêiner for iniciado. ### 4. Construir a imagem Docker No diretório que contém o `Dockerfile`, execute o seguinte comando para construir a imagem Docker: ```bash docker build -t my-python-app . ``` * `docker build`: Comando para construir a imagem. * `-t my-python-app`: Atribui um nome à imagem (`my-python-app`). * `.`: Especifica o diretório onde o Dockerfile está localizado (diretório atual). O processo de construção pode levar algum tempo, dependendo da velocidade da rede e do tamanho das dependências. ### 5. Executar o contêiner Docker Use o seguinte comando para executar o contêiner Docker: ```bash docker run -d -p 5000:5000 my-python-app ``` * `docker run`: Comando para executar o contêiner. * `-d`: Executa o contêiner em modo detached (executa em segundo plano). * `-p 5000:5000`: Mapeia a porta 5000 do host para a porta 5000 do contêiner. * `my-python-app`: Especifica o nome da imagem a ser usada. ### 6. Verificar o aplicativo Acesse `http://localhost:5000` no seu navegador, você deverá ver "Hello, Docker!". ### 7. Parar e remover o contêiner Use o seguinte comando para parar o contêiner: ```bash docker stop ``` `` Você pode encontrar o usando o comando `docker ps`. Use o seguinte comando para remover o contêiner: ```bash docker rm ``` ## Introdução ao Docker Compose Se seu aplicativo for composto por vários serviços, você pode usar o Docker Compose para gerenciá-los. ### 1. Criar o arquivo `docker-compose.yml` Crie um arquivo chamado `docker-compose.yml` e adicione o seguinte conteúdo: ```yaml version: "3.9" services: web: image: my-python-app ports: - "5000:5000" ``` **Explicação do docker-compose.yml:*** `version: "3.9"`: Especifica a versão do arquivo Docker Compose. * `services`: Define os serviços da aplicação. * `web`: Define um serviço chamado "web". * `image: my-python-app`: Especifica a imagem usada pelo serviço. * `ports`: Define o mapeamento de portas. ### 2. Iniciar a Aplicação No diretório que contém o arquivo `docker-compose.yml`, execute o seguinte comando para iniciar a aplicação: ```bash docker-compose up -d ``` * `docker-compose up`: Comando para iniciar a aplicação. * `-d`: Executa os contêineres em modo detached (em segundo plano). ### 3. Parar a Aplicação Use o seguinte comando para parar a aplicação: ```bash docker-compose down ``` ## Melhores Práticas de Segurança do Docker Como pode ser visto na discussão, a segurança das imagens Docker é uma questão importante. Aqui estão algumas melhores práticas de segurança do Docker: * **Use Imagens Oficiais:** Sempre que possível, use imagens fornecidas oficialmente, pois elas geralmente são verificadas e mantidas quanto à segurança. * **Verifique Vulnerabilidades nas Imagens:** Use ferramentas como o Trivy para verificar vulnerabilidades conhecidas nas imagens e atualize as imagens prontamente. * **Use o Princípio do Privilégio Mínimo:** Evite executar contêineres como usuário root. * **Limite os Recursos do Contêiner:** Use cgroups para limitar o uso de CPU e memória do contêiner. * **Atualize as Imagens Regularmente:** Mantenha as imagens atualizadas para corrigir vulnerabilidades de segurança. * **Use Ferramentas de Verificação de Segurança:** Ferramentas como Snyk, Clair, etc., podem ser integradas ao seu fluxo de CI/CD para verificar automaticamente as vulnerabilidades das imagens. ## Conclusão

Este artigo fornece um guia rápido de introdução ao Docker, abrangendo os conceitos principais, etapas de instalação e um exemplo simples de conteinerização de um aplicativo Python. Ao aprender esses fundamentos, você pode começar a usar o Docker para construir, testar e implantar seus aplicativos. Lembre-se, a segurança é essencial, sempre preste atenção à segurança das imagens Docker e tome as medidas apropriadas para proteger seus aplicativos. Embora o Kubernetes seja poderoso no gerenciamento de contêineres em larga escala, o Docker ainda é uma solução simples e eficaz em muitos cenários. Dominando o Docker, você estará mais bem preparado para enfrentar os desafios do desenvolvimento e implantação de software modernos.

Published in Technology

You Might Also Like