Artigo original: A beginner’s guide to Docker — how to create your first Docker application
Você é um desenvolvedor e deseja começar a usar o Docker? Este artigo é para você.
Após uma breve apresentação sobre o que o Docker é e sobre o motivo para usá-lo, você poderá criar sua primeira aplicação com o Docker.
O que é o Docker?
Docker é um software livre desenvolvido pela Docker Inc. Ele foi apresentado ao público em geral em 13 de março de 2013 e se tornou desde então algo necessário no mundo do desenvolvimento em tecnologia.
Ele permite que os usuários criem ambientes de desenvolvimento independentes e isolados para lançar e implantar suas aplicações. Esses ambientes são, então, chamados de contêineres (containers, em inglês).
Isso permitirá ao desenvolvedor executar um contêiner em qualquer máquina.
Como você pode ver, com o Docker, não há mais problemas de dependências ou de compilação. Tudo o que você precisa é lançar seu contêiner e a aplicação iniciará imediatamente.
O Docker, portanto, é uma máquina virtual?
Esta é uma das perguntas que mais são feitas com relação ao Docker. A resposta é: bem, não exatamente.
Ele até pode parecer com uma máquina virtual para começar, mas a funcionalidade não é a mesma.
Diferente do Docker, uma máquina virtual incluirá todo o sistema operacional. Ela funcionará de modo independente e agirá como um computador.
O Docker compartilhará apenas os recursos da máquina host para executar seus ambientes.

Qual o motivo para usar o Docker como um desenvolvedor?
Essa ferramenta pode realmente mudar a vida diária de um desenvolvedor. Para melhor responder a essa pergunta, eu escrevi uma lista abrangente de benefícios que você encontrará:
- O Docker é rápido. Diferentemente de uma máquina virtual, sua aplicação pode ser iniciada em poucos segundos e encerrada com a mesma rapidez.
- O Docker é multiplataforma. Você pode lançar seu contêiner em qualquer sistema.
- Contêineres podem ser criados e destruídos mais rapidamente do que uma máquina virtual.
- Você não terá mais a dificuldade de configurar seu ambiente de trabalho. Quando o Docker estiver configurado, você nunca terá de reinstalar suas dependências de modo manual novamente. Se trocar de computador ou se um novo funcionário se juntar à empresa, tudo o que você precisa fazer é dar a ele ou ela sua configuração.
- Você mantém limpo seu espaço de trabalho, já que cada um dos ambientes estará isolado e você poderá exclui-los a qualquer momento, sem causar impacto ao resto.
- Será mais fácil implantar seu projeto em seu servidor para colocá-lo on-line.
Vamos criar sua primeira aplicação
Agora que você sabe o que o Docker é, está na hora de criar sua primeira aplicação!
A finalidade deste tutorial breve é criar um programa em Python que exiba uma frase. Esse programa terá de ser lançado por meio de um Dockerfile.
Como você verá, não é complicado quando você compreende o processo.
Observação: você não precisará instalar o Python em seu computador. Ele funcionará no ambiente do Docker para conter o Python que executará o seu código.
1. Instalar o Docker em sua máquina
Para o Ubuntu:
Primeiro, faça a atualização de seus pacotes:
$ sudo apt update
Em seguida, instale o Docker com apt-get:
$ sudo apt install docker.io
Por fim, verifique se o Docker está instalado corretamente:
$ sudo docker run hello-world
- Para o MacOSX: siga este link (instruções em inglês).
- Para o Windows: siga este link (instruções em inglês).
2. Criar seu projeto
Para criar sua primeira aplicação em Docker, convido você a criar uma pasta em seu computador. Ela deve ter os dois arquivos abaixo:
- Um arquivo 'main.py' (arquivo em Python que conterá o código a ser executado).
- Um arquivo 'Dockerfile' (arquivo do Docker que conterá as instruções necessárias para criar o ambiente).
Normalmente, você deverá ter a seguinte arquitetura de pasta:
.
├── Dockerfile
└── main.py
0 directories, 2 files
3. Editar o arquivo em Python
Você pode adicionar o código a seguir ao arquivo 'main.py':
#!/usr/bin/env python3
print("O Docker é mágico!")
Nada de excepcional, mas assim que você ver a linha "O Docker é mágico!" exibida em seu terminal, saberá que o Docker está funcionando.
4. Editar o arquivo Docker
Um pouco de teoria: a primeira coisa a fazer quando quiser criar seu arquivo Dockerfile é se perguntar o que você quer fazer. O objetivo aqui é lançar código em Python.
Para fazer isso, nosso Docker deve conter todas as dependências necessárias para lançar o Python. Um sistema Linux (Ubuntu) com o Python instalado nele deve ser o suficiente.
O primeiro passo ao criar um arquivo do Docker é acessar o site da web do DockerHub. Ele contém diversas imagens pré-projetadas para poupar seu tempo (por exemplo: todas as imagens para o Linux ou linguagens de código).
Em nosso caso, digitaremos 'Python' na barra de pesquisa. O primeiro resultado é a imagem oficial criada para executar o Python. Perfeito! Vamos usá-la!
# Um dockerfile sempre deve começar importando a imagem de base.
# Usamos a palavra-chave 'FROM' para isso.
# Em nosso exemplo, queremos importar a imagem do python.
# Assim, escrevemos 'python' para o nome da imagem e 'latest' para a versão.
FROM python:latest
# Para lançar nosso código em Python, devemos importá-lo em nossa imagem.
# Usamos para isso a palavra-chave 'COPY'.
# O primeiro parâmetro, 'main.py', é o nome do arquivo no host.
# O segundo parâmetro, '/', é o caminho onde colocar o arquivo na imagem.
# Aqui, colocamos o arquivo na pasta raiz da imagem.
COPY main.py /
# Precisamos definir o comando para lançar quando rodarmos a imagem.
# Usamos a palavra-chave 'CMD' para isso.
# O comando a seguir executará "python ./main.py".
CMD [ "python", "./main.py" ]
4. Criar uma imagem do Docker
Quando seu código estiver pronto e o Dockerfile estiver escrito, tudo o que você precisa fazer é criar sua imagem para que contenha sua aplicação.
$ docker build -t python-test .
A opção '-t' permite que você defina o nome de sua imagem. Em nosso caso, escolhemos 'python-test', mas você pode usar o nome que quiser.
5. Executar a imagem do Docker
Quando a imagem for criada, seu código estará pronto para ser lançado.
$ docker run python-test
Você precisa colocar o nome de sua imagem após 'docker run'.
Aí está. Você, agora, deverá ver "O Docker é mágico!" sendo exibido em seu terminal.
O código está disponível
Se deseja obter o código completo para descobri-lo facilmente ou executá-lo, eu o coloquei à sua disposição no meu GitHub.
-> GitHub: exemplo de primeira aplicação com o Docker (readme.md em inglês)
Comandos úteis para o Docker
Antes de encerrar, preparei uma lista de comandos que pode ser útil para você no Docker.
- Listar suas imagens.
$ docker image ls
- Excluir uma imagem específica.
$ docker image rm [nome da imagem]
- Excluir todas as imagens existentes.
$ docker image rm $(docker images -a -q)
- Listar todos os contêineres existentes (em execução ou não).
$ docker ps -a
- Parar um contêiner específico.
$ docker stop [nome do contêiner]
- Parar todos os contêineres em execução.
$ docker stop $(docker ps -a -q)
- Excluir um contêiner específico (que não estiver em execução).
$ docker rm [nome do contêiner]
- Excluir todos os contêineres (apenas se estiverem parados).
$ docker rm $(docker ps -a -q)
- Exibir os logs (registros) de um contêiner.
$ docker logs [nome do contêiner]
E agora?
Depois de receber o feedback sobre o texto, decidi escrever a segunda parte desse guia do iniciante. Nela, você descobrirá como usar o docker-compose para criar sua primeira aplicação client/servidor com o Docker.
-> A beginner’s guide to Docker — how to create a client/server side with docker-compose (texto em inglês)
Conclusão
Você pode usar este artigo como referência sempre que precisar de um exemplo simples e concreto de como criar sua primeira aplicação em Docker. Se tiver perguntas ou comentários, fique à vontade para perguntar ao autor.
Se quiser mais conteúdo como este, você pode seguir o autor no Twitter. Lá, ele faz tweets sobre desenvolvimento para a web, autoaperfeiçoamento e sobre sua jornada como desenvolvedor full-stack!
Você também pode encontrar outros artigos como este no site da web do autor: herewecode.io.