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
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
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.
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]
Conclusão:
O Docker é uma ferramenta incrivelmente útil para desenvolvedores e operadores, permitindo que eles criem, implantem e gerenciem aplicativos de forma eficiente e escalável. À medida que você se aprofunda no mundo do Docker, você descobrirá uma série de recursos avançados e técnicas que podem aprimorar ainda mais sua experiência.