Docker vs Vagrant – Será?

Quando comecei a ler sobre o Docker vi muitos artigos comparando ele com o Vagrant. Isso me deixou bastante confuso, pois parecia que uma ferramenta estava concorrendo diretamente com a outra, com propósitos diferentes.

Ao me aprofundar tecnicamente no Docker constatei que são duas ferramentas distintas.

O Vagrant é o gerente “mandão”. Ele indica itens como:

  •  Local de inicialização do ambiente
    • VirtualBox, AWS, VMWARE, entre outros (alocação de recurso)
  • Ferramenta de automação que vai utilizar
    • Chef, puppet, shell, entre outros
  • Compartilhamento de pastas (local / remoto)
  • Versionamento da máquina virtual
  • Cache de instaladores

O Docker é o virtualizador de ambientes “sem a alocação prévia de recursos” de hardware da sua estação.

  •  Inicialização de ambiente
    • Docker
  • Ferramenta de automação
    • DockerFile (Shell script)
    • Já atuei executando receitas chef através do DockerFile
  • Versionamento da máquina Docker
  • Cache de instaladores embutido

Assim, o Docker no fim das conta lhe dá um novo SO dentro da seu Desktop só que sem a alocação prévia de recursos, como memória, CPU, disco que um VirtualBox ou VMWARE traria embutido. A alocação dos recursos da sua máquina ficaria por conta da inicialização de serviços que você executará na sua máquina Docker.

Ai vem algumas perguntas:

Mas se for assim, por que eu não executo os processos em minha própria máquina?

Imagine que você trabalhe em 6 projetos simultâneamente com uso de ferramentas distintas. Para isolar a sua máquina de problemas seria interessante você ter um ambiente virtualizado para cada um desses projetos. Caso você instale algo errado em sua estação, você poderia destruir o ambiente dos demais projetos tentando contemplar apenas um (perl, ruby, python) e teria um retrabalho gigantesco.

Mas para isso eu faço 6 máquinas virtuais no VirtualBox, não?

Sim. Porém, imagine que você alterne de projeto a todo momento. Teria que ligar uma VM/VBOX e desligar a outra para que os recursos do seu Desktop não fique alocado. Esse processo além de ser custoso é extremamente chato. No Docker basta você sair da máquina “Docker 1” e ir para a máquina “Docker 2” e iniciar os serviços.

Concluindo…

Na minha opinião, são ferramentas totalmente distintas. Atualmente, o Vagrant vem se adaptando para trabalhar com Docker e com este cenário teríamos um poder de automação muito grande utilizando as duas ferramentas.

Originalmente postado aqui.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s