O que é?
É um projeto de software livre para automatizar a implantação de aplicativos como contêineres autossuficientes portáteis que podem ser executados na nuvem ou localmente.
Se apoia em recursos existentes do kernel, inicialmente Linux, para isolar a execução de processos.
As ferramentas que o Docker traz são basicamente uma camada de administração de containers, baseado originalmente no LXC.
Como funciona?
Containers
É um padrão de unidade de software que empacota código e todas as dependências de uma aplicação fazendo com que ela seja executada rapidamente de forma confiável independente de ambiente computacional.
Máquinas virtuais x Containers
- Ambos fornecem virtualização
- As VMs incluem sistemas operacionais inteiros, tornando-as mais pesadas e mais lentas para iniciar
- Os contêineres, compartilham o kernel do sistema operacional host e isolam apenas o aplicativo e suas dependências. Isso torna os contêineres muito mais leves, mais eficientes no uso de recursos e mais rápidos para iniciar do que as VMs
- Os contêineres oferecem uma abordagem de virtualização mais simplificada e focada em aplicativos em comparação com a emulação de sistema mais ampla das VMs
Conceitos chaves (Docker Images, Containers, Dockerfiles e Docker Hub – Registry)
Docker Images
Uma imagem Docker é um pacote leve, independente e executável que inclui tudo o que é necessário para executar um software, incluindo código, tempo de execução, bibliotecas, variáveis de ambiente e arquivos de configuração.
As imagens são imutáveis, ou seja, uma vez criadas, elas não mudam.
Containers
Um contêiner é uma instância de tempo de execução de uma imagem – o que a imagem se torna na memória quando executada.
Isola o aplicativo de seu ambiente e garante que ele funcione de maneira uniforme, apesar das diferenças, por exemplo, entre ambiente de desenvolvimento e testes.
Dockerfiles
- São scripts usados para criar imagens Docker
- É um arquivo de texto simples que contém uma série de comandos que o Docker usa para montar uma imagem
- Automatiza o processo de criação de imagens e garante que seja repetível e consistente
Docker Hub (Registry)
É o serviço de registro baseado em nuvem do Docker.
Permite que você compartilhe suas imagens Docker com outras pessoas ou acesse imagens compartilhadas de outros desenvolvedores e organizações.
Fornece uma vasta biblioteca de imagens que foram contribuídas pelo próprio Docker e por sua comunidade de usuários, permitindo fácil distribuição e controle de versão de imagens.