O Docker não inventou os contêineres, mas tornou-os mais fáceis de usar com três etapas:
- Imagens: Ajuda você a empacotar um aplicativo (com todas as suas dependências).
- Registros: Ajudam a distribuir o aplicativo em todos os locais que você precisa para executá-lo.
- Contêineres: Executam o aplicativo de uma forma altamente reproduzível.
O Docker chama isso esse ciclo de vida de "Construir, Enviar e Executar".
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
- É chamado de "imagem do Docker", o nome padrão é: "Imagem OCI" ou apenas "imagem".
- 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.
- 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".
- Se fosse um aplicativo Python para compilar, a imagem conteria o próprio aplicativo e todas as dependências Python de que precisa.
- A principal distinção é ela também inclui a versão exata do Python e as bibliotecas do sistema para executar corretamente o Python.
- 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
- Chamado de "registro do Docker", ou apenas "registro", para abreviar.
- Essa inovação foi a chave para conectar nossa criação de imagens em uma máquina para executar nossos contêineres em outra.
- Agora que criamos uma imagem e a executamos em nossa máquina local, como a colocamos em todas as outras máquinas?
- 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?
- O registro é um gerenciador de pacotes baseado em HTTP que funciona como o apt, yum, npm e outros gerenciadores de pacotes.
- Você pode fazer upload de uma imagem e, em seguida, downlaod da imagem em outro lugar.
- 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
- 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.
- 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.
- 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.
- Agora, deixe-me enfatizar: isso NÃO é virtualização. Trata-se de isolamento de aplicativos, semelhante ao chroot.
- 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.
Top comments (0)