Docker:
O ambiente para toda a sua aplicação
Hello World!
Você está cansado de baixar dependências para rodar seus projetos? Banco de dados, bibliotecas, etc.
E a compatibilidade com o sistema operacional?
Just be honest with me
E se você tivesse a possibilidade de executar a partir de uma só interface?
Independente do projeto, seja ele Node, Django, Rails, etc...
A Solução
Exemplo
git clone https://github.com/psg2/fai-docker
cd fai-docker
cd helloworld
docker build -t helloworld .
docker run helloworld
A Solução
Como isso funciona por trás da magia?
Máquinas Virtuais vs Docker
Conceitos
Imagem:
Uma imagem é um pacote leve, autônomo e executável que inclui tudo o que é necessário para executar um software, incluindo o código, um runtime, bibliotecas, variáveis de ambiente e arquivos de configuração.
Container:
Um container é uma instância de tempo de execução de uma imagem - o que a imagem se torna na memória quando efetivamente executada. Ele é completamente isolado do ambiente do host por padrão, apenas acessando arquivos e portas do host, se configurado para fazê-lo.
Importante
Os containers executam aplicativos nativamente no kernel da máquina host. Eles têm melhores características de desempenho do que máquinas virtuais que só têm acesso virtual aos recursos do host através de um hypervisor. Os recipientes podem obter acesso nativo, cada um executando em um processo discreto, sem mais memória do que qualquer outro executável.
Composição
Exemplo - Pasta Services
Não é necessário que você crie todas as suas imagens, assim como tem repositórios no Github, tem imagens no Docker hub para você utilizar ou publicar.
Dúvidas?
Referências