Docker
Um container do Docker deve conter apenas os processos necessários para o aplicativo e nada mais. Os containers do Docker podem ser executados apenas em qualquer plataforma. Os containers do Docker podem “empilhar” e se comunicar entre si para permitir a criação de pilhas de aplicativos de intercomunicação.
-> Docker V / S Vagrant
Containers vs Hypervisors (VMs) para virtualização e conteinerização
- Com o Vagrant, pode ativar algums módulos do CentOS e instalar o nginx nelas; com o Docker, pode ativar algumas instâncias do nginx sem a sobrecarga de toda a VM.
- O Vagrant oferece uma nova VM para trabalhar – todos os componentes internos são iguais, independentemente da configuração da máquina local do desenvolvedor
- O Docker é uma camada de shell / gestão em duas partes para criar e executar containers linux virtuais, com base no LXC.
- Eu sempre digo que em Desenvolvimento / Teste e Teste, sempre deve testar seu aplicativo no ambiente de produção atual (incluindo configuração) e em qualquer ambiente de produção alternativo em potencial. Está a planear uma atualização de segurança? Deseja atualizar ou alternar sua pilha Java?
- É aqui que Vagrant e Docker brilham. Eu esperava que o Docker o ajudasse a acelerar os testes em vários ambientes operacionais.
- O Vagrant abstrai a máquina, enquanto o Docker abstrai o aplicativo. Quando precisar de uma máquina descartável, use o Vagrant. Se deseja um aplicativo descartável, use o Docker. Por que precisaria de uma máquina descartável para uma aplicação? Quando quiser fazer algo sofisticado com rede ou hardware, se não tiver certeza, use o Vagrant.
- Além dos fatores mencionados acima, um fator significativo é o sistema operacional do host. Se estiver em um host do Windows, ele excluirá a janela de encaixe no nível nativo.
- Vagrant on Docker = Fornecedor do Docker no Vagrant https: //docs.vagrantup.com/v2/do … Além das soluções ‘use both’ já fornecidas, que já fiz em projetos antes e posso concordar que é viável; há um argumento para o docker em que ‘Todo mundo está a fazer isso’. Portanto, terá muito apoio de uma comunidade realmente boa. Encontrei comunidade vagar escassa às vezes.
- Vagrant com um back-end baseado em VM como vSphere ou VirtualBox vs. Fig with Docker.
Puppet
Puppet usa uma DSL (baseada em Ruby) que tenta ser declarativa, como garantir que uma máquina esteja em um determinado estado, mas não em uma ordem específica.
O Puppet é uma das ferramentas de longa data no espaço de gestão de configuração completo. É uma ferramenta de código aberto, mas, há quanto tempo ela existe, foi testada e implantada em alguns dos maiores e mais exigentes ambientes. O Puppet é baseado em Ruby, mas usa uma DSL (Linguagem de script de domínio) personalizada mais próxima do JSON para trabalhar nela. Ele é executado como uma configuração de cliente principal e usa uma abordagem orientada a modelo. O design do código Puppet funciona como uma lista de dependências, o que pode tornar as coisas mais fáceis ou confusas, dependendo da sua configuração.
Prós:
- Comunidade de suporte bem estabelecida através do Puppet Labs.
- Possui a interface mais madura e roda em quase todos os sistemas operacionais.
- Instalação simples e configuração inicial.
- UI da Web mais completa neste espaço.
- Fortes recursos de geração de relatórios.
Contras:
- Para tarefas mais avançadas, precisará usar a CLI, que é baseada em Ruby (o que significa que precisará entender Ruby).
- O suporte para versões puro-Ruby (em vez daquelas que usam DSL personalizada do Puppet) está a ser reduzido.
- Devido ao DSL e um design que não se concentra na simplicidade, a base de códigos do Puppet pode se tornar grande, difícil e difícil de entender para novas pessoas em sua organização em maior escala.
- Abordagem orientada a modelo significa menos controle em comparação com abordagens orientadas a código.
Chef
Chef é uma ferramenta de código aberto para gestão de configurações, focada no lado do desenvolvedor para a sua base de usuários. O Chef opera como um modelo de cliente principal, com uma estação de trabalho separada necessária para controlar o mestre. É baseado em Ruby, com Ruby puro usado para a maioria dos elementos que escreve. O design do Chef é transparente e baseia-se em seguir as instruções fornecidas, o que significa que precisará garantir que suas instruções sejam claras.
Prós:
- Rica coleção de módulos e receitas de configuração.
- A abordagem orientada por código oferece mais controle e flexibilidade sobre as suas configurações.
- Estar centrado no Git oferece fortes recursos de controlo de versão.
- A ferramenta ‘Knife’ (que usa SSH para implantar agentes da estação de trabalho) facilita os encargos de instalação.
Contras:
- A curva de aprendizado é acentuada se ainda não conhece o Ruby e a codificação processual.
- Não é uma ferramenta simples, que pode levar a grandes bases de código e ambientes complicados.
- Não suporta funcionalidade de envio.