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.

Blog.-Are-containers-..VM-Image-1-1024x435
Docker x máquinas virtuais (copyright: blog do Docker)

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.