20.03.2025

Como iniciar um contêiner e usar o Docker com Python?

O conceito de particionamento de recursos agora domina muitas infraestruturas de redes corporativas. Hoje, um único servidor pode conter dezenas de ambientes virtuais que operam de forma independente, alguns trabalhando juntos ou integrando-se em plataformas comuns.

Neste artigo, vamos explorar a tecnologia de virtualização e a plataforma para criação de ambientes virtuais Docker, instalando e implantando uma imagem de contêiner com Python.

Implantação de um contêiner Docker

O primeiro passo é garantir que a plataforma esteja instalada. Para isso, precisamos atualizar os pacotes e instalar o Docker. Se já estiver pré-instalado, esse passo pode ser ignorado. Para sistemas baseados em Debian, utilizamos um script automatizado para instalação:

sudo apt purge -y docker.io docker-compose docker-doc podman-docker \

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

sudo bash get-docker.sh

Screenshot № 1 — Installation

Após seguir as boas práticas de segurança, devemos criar um usuário específico para executar o contêiner com privilégios reduzidos. Isso minimiza os riscos no caso de uma falha de segurança que permita a execução de comandos maliciosos. Para isso, usamos os seguintes comandos:

sudo adduser python && sudo usermod -aG docker python

Screenshot № 2 — Novo Usuário

Somente usuários root ou membros do grupo Docker podem acessar o socket do Docker. Portanto, adicionamos o usuário recém-criado ao grupo.

Agora podemos iniciar um contêiner base com o ambiente Python. Lembre-se de que ao rodar um contêiner, haverá um comando inicial que inicia o processo. Se esse comando for finalizado, o contêiner será encerrado. Para evitar isso, criamos um loop infinito no interpretador Bash:

sudo -u python docker run --name my_container -v data-storage:/home -d python /bin/bash -c ‘while true;do sleep 1000;done’ && sudo docker ps

Screenshot № 3 — Execução de um contêiner simples

Onde cada argumento desempenha uma função específica:

Para acessar o contêiner, usamos o seguinte comando:

docker exec <container-id> /bin/bash

Screenshot № 4 — Shell do Docker

Agora podemos atualizar os pacotes e instalar um gerenciador de processos para visualizar a estrutura do ambiente PID dentro do contêiner.

Screenshot № 5 — Processos em execução

Criando um servidor para os testes

Em geral, para rodar contêineres que não possuem serviços pré-instalados, é necessário preparar os recursos adequados. Ao criar um servidor em nuvem com Serverspace, os repositórios padrão incluem os pacotes essenciais para um ambiente de desenvolvimento seguro e eficiente.

Caso precise de um ambiente isolado, você pode utilizar um servidor VPS, seja na plataforma vStack Cloud ou VMware Cloud. Basta clicar no botão "Criar Servidor", selecionar a configuração desejada e iniciar a implantação.

Se os recursos locais não forem suficientes, uma alternativa eficiente é realizar a configuração em servidores em nuvem de alto desempenho, como os disponibilizados pela Serverspace.

Screenshot №6 — Criar Servidor

O provisionamento do servidor pode levar alguns minutos. Assim que estiver pronto, podemos nos conectar usando qualquer método disponível.

Implantação de um serviço em um contêiner Docker

Agora, vejamos um caso prático onde precisamos implantar um serviço de aplicação web dentro de um contêiner. Para isso, usaremos uma imagem base do Python e adicionaremos as dependências necessárias.

Como essa imagem é mínima, algumas bibliotecas precisam ser baixadas durante o processo. Existem duas formas de resolver isso:

Para este exemplo, usaremos o primeiro método, salvando um script Python diretamente dentro do contêiner:

nano /home/app.py

Screenshot № 7 — Criando a aplicação

Após salvar o arquivo, paramos e removemos o contêiner:

sudo docker stop $(sudo docker container ls -q -a) && sudo docker rm $(sudo docker container ls -q -a)

Agora criamos um novo contêiner com um script de inicialização que:

sudo -u python docker run --name my_container -d -v data-storage:/home -it python /usr/bin/bash -c ‘apt update && apt install python3-pip -y && python3 -m pip install flask && python3 /home/app.py’

Screenshot № 8 — Iniciando o contêiner com a aplicação

Depois de um tempo, verificamos os logs do contêiner para garantir que o serviço foi iniciado corretamente:

sudo docker logs <container-id>

Screenshot № 9 — Serviço iniciado

Ótimo! O serviço foi iniciado em um ambiente virtualizado dentro de uma máquina, permitindo que vários outros sejam executados simultaneamente em ambientes isolados. Isso melhora a eficiência, evita conflitos de dependências e aumenta a segurança dessa abordagem.