Ícone do site Daniel Castro

Docker: Introdução e primeiros passos para Devs

Docker introdução e primeiros passos para iniciantes
8 minutos leitura

Se você está desenvolvendo aplicações há algum tempo e já ouviu falar sobre Docker, mas ainda não entendeu muito bem o que é o Docker, quando deve usar ou quer saber como começar com o Docker, neste artigo quero ajudar a responder estas dúvidas.

Já faz um tempo que falo de desenvolvimento frontend, agora chegou o momento de compartilhar também um pouco mais sobre backend, e para começar vamos conhecer essa tecnologia tão importante para Devs, seja você Frontend ou Backend.

Caso prefira navegar para um ponto específico, deixei este indíce:

Qual problema Docker resolve?
O que é o Docker?
Quais as vantagens de usar Docker?
Desvantagens de usar Docker?
Como começar a usar Docker?

O problema

Antes de explicar o que é o Docker, é bom lembrar que quando estamos desenvolvendo um software, é comum existir múltiplos ambientes para nossa aplicação, alguns exemplos:

Geralmente, estes são os ambientes mais comuns nas empresas.

É comum que configurações de segurança, variáveis de ambiente, permissões e até o sistema operacional seja diferente nestes ambientes.

É bem provavel que hoje você esteja programando no Windows, mas o servidor que você vai publicar a aplicação esteja em um ambiente Linux.

Infelizmente, estas diferenças de ambiente, acabam sendo motivo para o código apresentar algum problema. Quem nunca escutou, “Na minha máquina esta funcionando”?

Outro cenário comum é quando você tem uma aplicação e precisa ter réplicas em execução, isto é bastante comum, para suportar grandes volumes de requisições, mas agora imagine lançar uma atualização nestas replicas, indo máquina por máquina.

Para minizar estes problemas podemos usar containers.

Os containers são ambientes isolados, independentes e autônomos para sua aplicação ficar em execução. Isso permiti padronizar e otimizar a publicação de uma aplicação. Usando containers você pode gerar um único artefato (imagem) e publicar onde precisar.

E estes são apenas alguns cenários, containers estão aí para nos ajudar a otimizar nosso fluxo de trabalho e uma das soluções mais populares é o Docker.

Agora, vamos adiante, conhecer mais sobre Docker.

O que é o Docker?

O Docker é uma plataforma de código aberto, que ajuda na criação e administração de aplicações em ambientes isolados, chamados de containers.

A partir de uma imagem da sua aplicação, você pode copiar, migrar e implantar a aplicação em containers de um ambiente para outro que tenha Docker instalado.

A imagem Docker é um pacote executável e autônomo que contém o código da sua aplicação, com configurações, bibliotecas e dependências. Essa imagem é gerada a partir de um arquivo Dockerfile e pode ser armazenada para reuso e replicação.

Essa flexibilidade existe porque a imagem é colocada em execução em um Container Docker, um ambiente isolado do host, ainda assim com acesso compartilhado ao sistema de arquivos, interfaces de rede e portas do Host.

Containers se parecerem muito com uma Máquina Virtual, mas possuem algumas diferenças na sua concepção que os tornam mais portáteis, leves e autônomo do que uma VM, veja:

Conceitualmente, Máquinas Virtuais são abstrações do hardwre físico de um servidor, a partir de um Hypervisor que transforma o host em muitos servidores. Isso permiti, por exemplo, que você tenha múltiplos sistemas operacionais usando o mesmo Hardware.

Já os containers, são a abstração da camada de aplicação do host, do Sistema Operacional. O container compartilha o mesmo kernel do SO entre os containers, mas cada um é executado em um processo isolado.

Embora ambas soluções sejam boas, containers levam vantagem, vamos ver mais abaixo.

Aqui cabe um contexto histórico, os containers já eram realidade antes do Docker com os Linux Containers (LXC), foi a partir de alguns desafios com essa abordagem que o Docker foi apresentado na PyCon de 2013 pelo Solomon Hykes.

Vamos adiante conhecer as vantagens e desvatangens de usar containers Docker.

Vantagens de usar Docker

Desvantagens do Docker

Quando devo utilizar Docker

Não é regra, mas se você tem uma aplicação distribuída (microsserviços), usar containers pode ser uma boa prática, vai te ajudar a padronizar o ambiente, implantar e replicar com agilidade novas replicas do serviço quando necessário.

Mas Docker não é restrito a microsserviços, também é possível conteinerizar uma aplicação monolítica, o que poderá ser necessário é alguma configuração adicional.

O nível de compatibilidade do Docker é muito grande, você encontra imagens de ambientes no Docker Hub para executar praticamente qualquer linguagem ou tecnologia, como Node.js, Python, Go, PHP, .NET, MySQL, Redis, PostgreSQL ou RabbitMQ.

O principal questionamento que você deve fazer é: Será que o projeto que estou desenvolvendo é compátivel com containers e como isto vai otimizar meu fluxo de trabalho?

Hoje tem sido uma escolha quase certa em muitos projetos, justamente por trazer mais vantagens do que desvantagens. Mais do que nunca, nós como Pessoas Desenvolvedoras precisamos conhecer mais sobre esta tecnologia e inserir no nosso dia a dia.

Como começar a usar o Docker

Agora sim, vamos há um exemplo e alguns comandos básicos:

1. Instalar o Docker

Para começar, vamos instalar o Docker Desktop na máquina.

O Docker Desktop é o instalador e inteface gráfica (UI) para visualizar containers, imagens, volumes, entre outras configurações no seu ambiente local.

O Docker está disponível para Windows, Linux e Mac.

Baixe o instalador em https://docs.docker.com/get-docker/ e siga as instruções.

2. Verificar a instalação e criar conta no Docker Hub

Para verificar se o Docker foi instalado, abra um terminal e execute o seguinte comando:

docker --version

Isso deve retornar a versão do Docker em sua máquina.

Após confirmar a instalação, abra o Docker Desktop e clique no botão Sign-in, caso você ainda não tenha um Docker ID, recomendo que crie sua conta e realize o login.

A criação do seu Docker ID vai te dar acesso as imagens públicas no Docker Hub, você poderá carregar suas imagens de containers para compartilhar com outros Devs e ter acesso a outros recursos para você ter uma experiência mais completa.

3. Executar um container

Agora vamos executar um container. Neste primeiro artigo, vamos executar o container “hello-world” fornecido pelo Docker.

Execute o seguinte comando para executar o container:

docker run hello-world

O comando run fará o download da imagem hello-world para executar. O resultado esperado é uma mensagem de boas-vindas similar a imagem abaixo.

4. Listar imagens

Após executar o container, uma imagem foi baixada para seu ambiente e isto sempre vai acontecer quando você executar algum container.

Agora vamos visualizar todas as imagens baixadas, execute o comando a seguir:

docker images

O resultado será uma lista das imagens com algumas informações úteis, veja no print abaixo que temos o hello-world na lista, além de outras imagens que eu já tinha baixado.

5. Listar containers

Agora o próximo comando que vamos testar é para listar os containers que estão em execução no nosso ambiente, para isso execute este comando:

docker ps

Neste nosso primeiro teste, o resultado será vazio, porque o container hello-world não ficou em execução, apenas gerou uma saída no terminal.

6. Pausar um container

Agora, caso o container estivesse em execução, poderíamos pausar nosso container executando o seguinte comando com o seu ID ou o nome de container:

docker stop <ID ou nome do container>

Nos próximos exemplos vamos conseguir usar estes e outros comandos. 🙂

7. Remover um container

Após pausar o container, você também poderá remove-lo, para isso você pode executar o comando abaixo junto com o ID ou nome de container:

docker rm <ID ou nome do container>

8. Remover uma imagem

Por fim, vamos aprender a remover a imagem utilizada pelo nosso container, isto vai liberar espaço do nosso ambiente. Utilize o comando abaixo com o ID o nome da imagem:

docker image rm <ID ou nome da imagem>

9. Mais comandos Docker

Estes são apenas alguns comandos básicos, você pode descobrir mais comandos e suas opções usando a propriedade –help no terminal.

Vou deixar aqui alguns exemplos para você explorar:

docker --help
docker images --help
docker ps --help

Próximos passos

Agora, os próximos passos é explorar mais o Docker conteinerizando algumas aplicações, para isso temos uma outra forma de configurar nossa aplicação, usando um arquivo de configuração chamado Dockerfile, ao invés de executar via terminal.

No próximo artigo vamos ver sobre isso. Neste primeiro artigo meu objetivo era te apresentar o Docker, as suas vantagens, desvantagens, fazer um hello-world e apresentar alguns comandos básicos para começarmos.

Espero ter conseguido te ajudar, agora além de falar de frontend e desenvolvimento web, vamos ter mais artigos sobre backend e DevOps também por aqui. Caso tenha curtido o artigo e tenha outras sugestões, pode deixar seu feedback nos comentário aqui abaixo, ficarei muito feliz em saber sua opnião.

Até mais!

Don't miss out!
Acesse novos conteúdos 

Entre para minha newsletter e receba os novos conteúdos e novidades semanalmente.

Invalid email address
Você pode sair da lista a qualquer momento. Ao enviar o formulário, você aceito a política de privacidade.
Sua inscrição na newsletter foi recebida com sucesso!
Sair da versão mobile