DEV Community

Cover image for O que é Docker?
Diego Dmitry
Diego Dmitry

Posted on • Edited on

O que é Docker?

O Docker não inventou os contêineres, mas tornou-os mais fáceis de usar com três etapas:

  1. Imagens: Ajuda você a empacotar um aplicativo (com todas as suas dependências).
  2. Registros: Ajudam a distribuir o aplicativo em todos os locais que você precisa para executá-lo.
  3. Contêineres: Executam o aplicativo de uma forma altamente reproduzível.

O Docker chama isso esse ciclo de vida de "Construir, Enviar e Executar".

Docker Build, Ship and Run

Esses são os princípios básicos sobre os quais todas as outras tecnologias de contêineres são construídas.

Observe que essas inovações agora têm padrões e são regidas pela Open Container Initiative (OCI), que faz parte da Linux Foundation.

A Imagem Docker

The Docker Image

  1. É chamado de "imagem do Docker", o nome padrão é: "Imagem OCI" ou apenas "imagem".
  2. O Docker usa uma lista de instruções, chamada de Dockerfile, que é semelhante a um script em shell, e coloca essas instruções em camadas umas sobre as outras até ter tudo o que você precisa para executar o aplicativo, inclusive todas as dependências do sistema.
  3. A inclusão das dependências é um diferencial importante entre o Docker e muitos sistemas de empacotamento. Isso ajuda a evitar o problema: "funciona na minha máquina".
  4. Se fosse um aplicativo Python para compilar, a imagem conteria o próprio aplicativo e todas as dependências Python de que precisa.
  5. A principal distinção é ela também inclui a versão exata do Python e as bibliotecas do sistema para executar corretamente o Python.
  6. Tudo está incluído, exceto o kernel do sistema operacional e os drivers de hardware. Até mesmo metadados sobre como iniciar o aplicativo, variáveis de ambiente padrão e quais portas ele escuta estão incluídos.

O Registro

The Docker Registry

  1. Chamado de "registro do Docker", ou apenas "registro", para abreviar.
  2. Essa inovação foi a chave para conectar nossa criação de imagens em uma máquina para executar nossos contêineres em outra.
  3. Agora que criamos uma imagem e a executamos em nossa máquina local, como a colocamos em todas as outras máquinas?
  4. Como posso ter certeza de que o restante da minha equipe, meu teste de CI e todos os meus servidores executam exatamente a mesma imagem?
  5. O registro é um gerenciador de pacotes baseado em HTTP que funciona como o apt, yum, npm e outros gerenciadores de pacotes.
  6. Você pode fazer upload de uma imagem e, em seguida, downlaod da imagem em outro lugar.
  7. O protocolo de registro é eficiente. Ele só faz upload e download das partes alteradas (camadas) e armazena a imagem no cache local das máquinas para a execução rápida de novos contêineres.

Pense nas imagens e no registro como o gerenciador de pacotes, onde podemos criar, baixar e executar qualquer aplicativo em qualquer sistema. Isso inclui a criação e a execução no Linux, macOS, Windows, na nuvem, no seu data center, em um mainframe ou em um pequeno Raspberry Pi. O Docker funciona em todos eles.

O Docker Container

The Docker Container

  1. Chamado de "Docker contêiner", o nome padrão "Contêiner OCI" ou apenas "contêiner". Ele não é chamado de "docker" ou "dockers". Docker são muitas coisas.
  2. O Docker iniciará sua imagem de contêiner em um novo contêiner em execução e usará o comando especificado no Dockerfile para iniciá-lo.
  3. Usa dois recursos do kernel Linux, chamados namespaces e cgroups (grupos de controle), para isolar seu aplicativo de modo que ele não possa ver o restante do host. Para o aplicativo, os únicos arquivos que ele vê são os que estão na imagem do contêiner. Ele não vê nenhum outro processo fora do contêiner e até mesmo tem sua própria interface de rede e IP privado.
  4. Agora, deixe-me enfatizar: isso NÃO é virtualização. Trata-se de isolamento de aplicativos, semelhante ao chroot.
  5. Você pode iniciar muitos desses contêineres a partir da mesma imagem de contêiner, no mesmo sistema, e todos eles estarão isolados uns dos outros. As alterações de arquivos em um contêiner não afetam os arquivos em outro.

Leitura adicional

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full post →

Top comments (0)

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up