Pular para o conteúdo principal

Execute uma imagem do Docker como um contêiner: Um guia prático para iniciantes

Este tutorial ensina você a executar com confiança imagens do Docker usando o docker run, com exemplos claros, dicas práticas e conselhos para solução de problemas.
Atualizado 6 de jun. de 2025  · 9 min lido

Se estiver se perguntando como executar uma imagem do Docker, você não está sozinho. Não importa se você acabou de obter uma imagem do Docker Hub ou criou uma você mesmo, executá-la é a etapa principal que dá vida ao seu aplicativo.

Este tutorial é um guia para você que está começando a usar o comando docker run e muito mais. Você aprenderá:

  • O que são realmente as imagens e os contêineres do Docker.
  • Como executar uma imagem usando diferentes opções.
  • E como parar, remover e solucionar problemas de contêineres como um profissional.

Ao final, você estará confiante para lançar seus próprios contêineres e entender exatamente o que está acontecendo sob o capô.

Entendendo as imagens e os contêineres do Docker

Antes de entrar nos exemplos de comandos, vamos entender as imagens e os contêineres do Docker em termos simples.

Se você já estiver familiarizado com esses termos, fique à vontade para pular para a próxima seção!

O que é uma imagem do Docker?

Uma imagem do Docker é um projeto imutável para seu aplicativo. Ele define tudo o que o seu contêiner precisa: o código, as bibliotecas, o ambiente e as configurações. Depois de ter uma imagem, você pode usá-la para ativar um ou cem contêineres. Ele permanece consistente todas as vezes.

Então, de onde vêm as imagens? O Dockerfile os constrói. Um Dockerfile é onde você define qual imagem de base usar, quais dependências instalar e como seu aplicativo deve ser executado.

Quando seu Dockerfile estiver pronto, você executará o comando docker build. Esse comando segue as etapas do arquivo e as transforma em uma imagem reutilizável.

O que é um contêiner do Docker?

Um contêiner do Docker é a versão ativa de uma imagem do Docker. Ele permite que seu aplicativo seja executado em seu próprio ambiente isolado, garantindo um comportamento consistente, independentemente do sistema host. 

Ele segue a abordagem "construir uma vez, executar em qualquer lugar", para que você não precise configurar manualmente o ambiente todas as vezes. 

Imagem versus contêiner

A tabela a seguir compara uma imagem e um contêiner lado a lado:

Imagem

Contêineres 

Uma imagem é um pacote padronizado que inclui todos os arquivos, binários, bibliotecas e configurações para executar um contêiner.

Uma instância de tempo de execução de uma imagem.

Uma imagem é imutável. Isso significa que ele não pode mudar até que seja reconstruído.

O contêiner é mutável. Você pode modificá-lo enquanto estiver em execução, instalar novos pacotes ou alterar arquivos de configuração.

Um Dockerfile (um conjunto de instruções para criar uma imagem) cria uma imagem.

Uma imagem cria um contêiner.

Seu computador armazena arquivos de imagem.

Um contêiner é executado na sua memória.

Se você não tem experiência com a conteinerização, nosso curso Introdução ao Docker o orientará nos conceitos básicos com exemplos práticos.

O comando docker run

Quando você executa o comando docker run, está dizendo ao Docker para criar um novo contêiner com base em uma imagem.

Em termos simples, você está iniciando um programa dentro de um ambiente isolado. Esse programa pode ser qualquer coisa, um simples aplicativo da Web ou um serviço completo com vários processos. 

Sintaxe básica

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

  • [OPTIONS] - Sinalizadores extras para personalizar a execução do contêiner
  • IMAGE - O nome da imagem do Docker 
  • [COMMAND] - (Opcional) Substitui o comando padrão na imagem.
  • [ARG...]- (Opcional) Argumentos.

Sinalizadores e opções comuns

  • -d: Modo separado: executa contêineres em segundo plano
  • -p: Mapeamento de portas: Para acessar um serviço (como uma API ou um aplicativo da Web) a partir do navegador, você precisa expor uma porta. Exemplo: -p 3000:3000 mapeia a porta 3000 da sua máquina para a porta 3000 do contêiner.
  • --name: O Docker dá ao contêiner um nome padrão, mas você pode usar esse sinalizador para dar a ele um novo nome.
  • -v:  Você usa isso para manter todos os dados separados do próprio contêiner, garantindo que eles permaneçam mesmo que o contêiner seja interrompido ou excluído.
  • --rm: Quando o contêiner para, esse sinalizador o exclui automaticamente.
  • -e: Use-o para passar senhas de banco de dados ou chaves de API sem codificá-las em seu aplicativo.

Execução de contêineres interativos versus contêineres desanexados

O Docker executa contêineres de duas maneiras: modo interativo (-it) e modo de desconexão (-d). Cada modo tem casos de uso específicos, dependendo de seus objetivos. 

  • -it: Modo interativo: Se quiser trabalhar diretamente dentro de um contêiner usando o terminal, você pode usar o sinalizador -it. Ele coloca o contêiner no modo interativo, para que você possa digitar comandos, ver a saída e trabalhar em tempo real.
    • -i: Mantém a entrada aberta para que você possa digitar comandos no contêiner
    • -t: Oferece a você uma interface semelhante a um terminal dentro do contêiner
  • -d: Modo independente: Ele executa o contêiner em segundo plano, de modo que seu terminal fica livre para outras tarefas. 

Mantenha os principais comandos e práticas recomendadas na ponta dos dedos com a nossa folha de dicas do Docker para ciência de dados.

Extração e execução de imagens do Docker

Agora que você conhece a sintaxe do comando docker run, esta seção mostrará como criar imagens personalizadas e executá-las.

Usando imagens do Docker Hub

O Docker Hub é como uma biblioteca on-line para imagens de contêineres. Você pode pegar os pré-construídos ou carregar os seus para compartilhar com outras pessoas. Ele oferece suporte a repositórios públicos e privados, para que você possa compartilhar imagens abertamente com a comunidade ou implementar controles de acesso para suas equipes internas.

Execução de imagens personalizadas 

Para executar uma imagem do Docker, primeiro você precisa criá-la usando um Dockerfile. Em seguida, você pode executá-lo localmente ou enviá-lo para o Docker Hub para compartilhar. 

Então, primeiro vamos criar um Dockerfile. Aqui está um exemplo:

# Use official Python base image
FROM python:3.11-slim
# Set working directory in the container
WORKDIR /app
# Copy requirements file and install dependencies
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Copy the rest of the app code
COPY . .
EXPOSE 5000
# Set default command
CMD ["python", "app.py"]

O que significa o Dockerfile acima?

  • FROM python:3.11-slimSe você não tiver uma imagem de base com a versão 3.11 do Python, poderá usar a imagem de base com a versão 3.11.
  • WORKDIR /app: Define /app como o diretório de trabalho dentro do contêiner.
  • COPY requirements.txt . Move todas as dependências da máquina local para o diretório de aplicativos do contêiner.
  • RUN pip install --no-cache-dir -r requirements.txtInstala as dependências no arquivo requirements.txt.
  • COPY . . Copia o código dos diretórios de trabalho atuais (aplicativos, arquivos de configuração e outros) para o diretório de aplicativos do contêiner.
  • CMD ["python", "app.py"]: executa o app.py quando você inicia um contêiner a partir dessa imagem.

Etapa 1. Criar Dockerfile 

Vamos ver o que acontece quando você cria esse Dockerfile.

  • Execute o seguinte comando:
docker build -t my-python-app .

Observação: Para que esse comando funcione, você deve primeiro ter o Docker configurado em seu sistema; este guia o ajuda a fazer isso.

Imagem mostrando os resultados da execução do docker build -t my-python-app no terminal.

Veja o que acontece nos bastidores quando você executa o comando de compilação:

  1. O Docker lê o Dockerfile
  2. A imagem base do Python é obtida do Docker Hub
  3. O diretório de trabalho é definido como /app.
  4. O requirements.txt é copiado para o contêiner.
  5. As dependências são instaladas usando pip install.
  6. O restante do seu código é copiado em /app.
  7. A imagem final é marcada como my-python-app.

Etapa 2: Executar o Dockerfile

Depois que a imagem for criada, você poderá executá-la usando:

docker run -p 5000:5000 my-python-app

Veja o que acontece quando você o executa: 

  • Um novo contêiner da sua imagem personalizada, my-python-app, é criado.
  • A porta 5000 no seu computador é mapeada para a porta 5000 no contêiner (-p 5000:5000).
  • O arquivo CMD ["python", "app.py"] é executado e executa o aplicativo.
  • O contêiner é executado em segundo plano devido à opção -d (modo desanexado).

Nesse momento, você pode acessar http://localhost:5000 no navegador e verá algo como o seguinte, o que significa que o aplicativo está em execução:

Captura de tela de um navegador em http://localhost:5000 mostrando uma mensagem "Hello from Docker!".

Se você trabalha com machine learning, estas imagens do Docker para ML e IA podemacelerar a configuração do seu ambiente.

Execução de imagens com configuração

Para alguns aplicativos, você pode precisar executar imagens com uma configuração específica. Aqui estão dois exemplos comuns.

Dados persistentes

Os contêineres armazenam dados temporariamente. Quando você os exclui, os dados desaparecem. Um volume é uma forma de armazenar dados fora do contêiner para que eles persistam mesmo que o contêiner seja removido ou reiniciado.

Para montar um volume, você precisa executar um comando como o seguinte:

docker run -v my-volume:/app/data my-image

Os dados gravados em /app/data são salvos no volume mesmo depois que o contêiner é removido.

Passagem de variáveis de ambiente

As variáveis de ambiente passam as definições de configuração para um contêiner do Docker em tempo de execução. Isso personaliza seus contêineres do Docker sem modificar suas imagens do Docker. 

Você tem duas maneiras de passar variáveis de ambiente: 

  1. Você pode passar variáveis de ambiente usando o parâmetro -e. Aqui está um exemplo de comando:
docker run -e ENV=production -e DEBUG=False my-image
  1. Você pode criar um arquivo .env com todas as variáveis de ambiente e passá-lo para o comando. Aqui está um exemplo:
docker run --env-file .env my-image

Exemplo de arquivo .env:

ENV=staging
DEBUG=True
SECRET_KEY=mysecret

Gerenciando contêineres em execução

Quando um contêiner estiver em execução, você poderá visualizá-lo, interrompê-lo e acessá-lo. Vamos ver como você pode fazer isso.

Visualização de contêineres ativos

Para listar todos os contêineres Docker ativos em execução no seu sistema, execute o comando docker ps ou docker container ls. Esse comando exibe o ID do contêiner, a imagem, o comando, a porta, o status e outros detalhes.

docker ps
# or
docker container ls

Para incluir todos os contêineres, não apenas os que estão em execução, como os que saíram ou foram criados, mas não iniciados, use o sinalizador -a:

docker ps -a

Para visualizar apenas o contêiner criado mais recentemente, use o sinalizador -l (last):

docker ps -l

Se você quiser ver todos os contêineres classificados por hora de criação, com o mais recente listado primeiro, execute:

docker ps -a --sort=created

Parar e remover contêineres

Para interromper um contêiner específico em execução, use o comando docker stop seguido do ID ou nome do contêiner:

docker stop <container_id_or_name>

Para interromper todos os contêineres em execução, use:

docker stop $(docker ps -q)
  • $(docker ps -q) retorna uma lista de todos os IDs de contêineres em execução.

Quando um contêiner é interrompido, você pode removê-lo usando:

docker rm <container_id_or_name>

Para remover todos os contêineres parados, execute:

docker container prune

Para ir além e remover contêineres, volumes, redes e imagens não utilizados, consulte o guia de poda do Docker.

Acesso a logs de contêineres e shell

  • Registros do docker - O comando docker logs recupera em lote os registros presentes no momento da execução.
  • docker exec - docker exec permite que você execute um novo comando dentro de um contêiner em execução existente sem interrompê-lo ou reiniciá-lo. Pense nisso como a abertura de um novo terminal dentro do seu contêiner, para que você possa mexer, executar scripts, verificar logs ou depurar.
  • docker attach - docker attach conecta seu terminal diretamente ao processo principal de um contêiner em execução. Isso significa que você pode ver a saída em tempo real do contêiner (logs, prompts, etc.) e até mesmo interagir com ele se o processo aceitar entradas.

Solução de problemas comuns

Soluções simples para problemas comuns. Aqui estão alguns erros comuns durante a execução de imagens do Docker e como você pode lidar com eles. 

Erro 1: "Resposta de erro do daemon: pull access denied for alpine-python, o repositório não existe ou pode exigir 'docker login': denied: o acesso solicitado ao recurso é negado."

  • O que isso significa: O Docker tentou extrair uma imagem, neste caso a imagem alpine-python do Docker Hub, mas a imagem não existe ou é privada, e você não está autenticado.
  • Como corrigir:
    • Verifique novamente o nome e a tag da imagem no Docker Hub.
    • Se for uma imagem privada, execute docker login para autenticar.
    • Certifique-se de que a imagem exista se você estiver extraindo de um registro personalizado.

Erro 2: "Nenhuma imagem foi encontrada: <nome da imagem>:<tag>"

  • O que isso significa: Você tentou executar ou marcar uma imagem localmente, mas a imagem (ou a marca especificada) não está disponível em seu sistema.
  • Como corrigir:
    • Use o site docker images paraverificar as imagens disponíveis.
    • Puxe a imagem explicitamente:
docker pull <image-name>:<tag>

Erro 3: "manifesto para <image>:<tag> não encontrado: manifesto desconhecido: O manifesto nomeado não é conhecido pelo registro."

  • O que isso significa: Esse erro provavelmente ocorre quando a imagem ou a tag especificada não existe.
  • Possíveis correções: Essas dicas devem corrigir a maioria dos erros comuns: 
    • Verifique se a imagem e o nome da tag estão corretos.
    • Consulte as tags da imagem no Docker Hub ou no seu registro personalizado.
    • Use docker pull : para obter uma versão válida.
    • Se você estiver criando localmente, use um Dockerfile correto e crie a imagem com ele:
docker build -t <image>:<tag> .

Conflitos de portas e falhas de conexão

Os conflitos de porta ocorrem quando vários contêineres ou um contêiner e outro aplicativo tentam acessar a mesma porta.

  • Como corrigir:
    • Use uma porta de host diferente ao executar o contêiner:
docker run -p 8081:80 <image>
  • Interrompa o serviço que está usando a porta no momento.
  • Identifique o que está usando uma porta (por exemplo, 8080) com:
lsof -i :8080

Conclusão 

A execução de uma imagem do Docker é uma das etapas mais importantes e capacitadoras do uso de contêineres, quer você esteja criando um servidor Web simples ou implantando um aplicativo complexo. Com apenas alguns comandos, como docker run, docker ps e docker stop, você agora está preparado para iniciar, gerenciar e solucionar problemas de contêineres com confiança.

Se você estiver pronto para ir além, tente criar sua própria imagem com um Dockerfile, explore os sinalizadores docker run avançados ou saiba como gerenciar vários contêineres com o Docker Compose.

Confira estes cursos para continuar sua jornada no Docker:

Domine o Docker e o Kubernetes

Aprenda o poder do Docker e do Kubernetes com uma trilha interativa para criar e implantar aplicativos em ambientes modernos.
Inicie a trilha gratuitamente

Perguntas frequentes

Posso executar vários contêineres a partir da mesma imagem do Docker?

Sim, você pode executar vários contêineres a partir da mesma imagem. Cada contêiner é isolado e pode ter suas próprias configurações, portas e variáveis de ambiente.

Como posso passar segredos ou chaves de API de forma segura para um contêiner do Docker?

Use o sinalizador -e para definir variáveis de ambiente ou use um arquivo .env e --env-file para passar segredos em tempo de execução sem codificá-los.

Como faço para executar uma imagem do Docker em segundo plano?

Use o sinalizador -d com docker run para iniciar o contêiner no modo desconectado, permitindo que o terminal permaneça disponível para outros comandos.

Qual é a diferença entre docker exec e docker attach?

 docker exec abre uma nova sessão de shell dentro do contêiner, enquanto docker attach se conecta ao processo principal do contêiner e à sua saída em tempo real.

Por que recebo a mensagem "pull access denied" ao executar uma imagem?

Isso geralmente significa que a imagem é privada ou está mal escrita. Verifique o nome, a tag e certifique-se de que você esteja conectado ao Docker Hub com docker login.

Como faço para manter os dados em um contêiner depois que ele parar?

Use o sinalizador -v para montar um volume, garantindo que os dados sejam armazenados fora do contêiner e permaneçam intactos mesmo depois que o contêiner for removido.

Qual é a melhor maneira de executar um contêiner para fins de desenvolvimento?

Use os sinalizadores -it para o modo interativo, juntamente com a montagem de volumes e variáveis de ambiente para simular um ambiente de desenvolvimento local.

Como posso descobrir quais portas estão em conflito no meu computador?

Use o site lsof -i : para identificar qual processo está usando uma porta específica e, em seguida, interrompa-o ou use uma porta de host diferente para o seu contêiner.

Como posso visualizar os registros de um contêiner do Docker em execução?

Use o comando docker logs para recuperar e analisar os registros da saída padrão e dos fluxos de erro do contêiner.


Srujana Maddula's photo
Author
Srujana Maddula
LinkedIn

Srujana é redatora freelancer de tecnologia e tem um diploma de quatro anos em Ciência da Computação. Escrever sobre vários tópicos, incluindo ciência de dados, computação em nuvem, desenvolvimento, programação, segurança e muitos outros, é algo natural para ela. Ela gosta de literatura clássica e de explorar novos destinos.

Tópicos

Saiba mais sobre o Docker com estes cursos!

Programa

Containerization and Virtualization with Docker and Kubernetes

0 min
Learn the power of Docker and Kubernetes, this interactive track will allow you to build and deploy applications in modern environments.
Ver detalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado

blog

O guia completo da certificação Docker (DCA) para 2024

Libere seu potencial no Docker e na ciência de dados com nosso guia abrangente. Explore as certificações do Docker, os caminhos de aprendizado e as dicas práticas.
Matt Crabtree's photo

Matt Crabtree

8 min

Tutorial

Como instalar e configurar o MySQL no Docker

Saiba como instalar e configurar o banco de dados MySQL dentro de contêineres do Docker. O tutorial inclui conceitos como conexão com servidores MySQL, execução de clientes MySQL para conexão com contêineres e assim por diante.
Bex Tuychiev's photo

Bex Tuychiev

12 min

Tutorial

Como escrever um script Bash: um tutorial simples de scripts Bash

Descubra os fundamentos da criação de scripts Bash e aprenda a escrever um script Bash.
Kurtis Pykes 's photo

Kurtis Pykes

5 min

Tutorial

Tutorial do MySQL: Um guia abrangente para iniciantes

Descubra o que é o MySQL e como começar a usar um dos sistemas de gerenciamento de banco de dados mais populares.
Javier Canales Luna's photo

Javier Canales Luna

15 min

Tutorial

Desenvolvimento de back-end em Python: Um guia completo para iniciantes

Este guia completo ensina a você os fundamentos do desenvolvimento de back-end em Python. Aprenda conceitos básicos, estruturas e práticas recomendadas para você começar a criar aplicativos da Web.
Oluseye Jeremiah's photo

Oluseye Jeremiah

15 min

Tutorial

Tutorial do GitHub e do Git para iniciantes

Um tutorial para iniciantes que demonstra como funciona o controle de versão do Git e por que ele é crucial para projetos de ciência de dados.
Abid Ali Awan's photo

Abid Ali Awan

9 min

Ver maisVer mais