Vagabundo

Docker Vs Vagrant

Docker Vs Vagrant

As equipes de desenvolvimento e operações têm lidado com a complexidade dos ambientes de software desde o início. É um problema comum quando o código de trabalho em um ambiente não funciona em outro.

Tanto o docker quanto o vagrant ajudam a criar ambientes de desenvolvimento previsíveis e repetíveis. No entanto, docker usa tecnologia de contêiner, enquanto vagrant usa máquinas virtuais para atingir esse objetivo. Compreender os pontos fortes e fracos do Docker e do Vagrant ajudará os desenvolvedores a combinar e combinar essas ferramentas para alcançar os resultados desejados.

Vamos começar com as tecnologias subjacentes primeiro.

Máquina virtual

Uma máquina virtual (VM) emula um computador físico. Ele vem com seu próprio sistema operacional completo e alocação de recursos. A máquina host fornece os recursos físicos necessários, mas o ambiente virtualizado funciona como uma máquina independente com seu próprio BIOS, CPU, armazenamento e adaptadores de rede.

Embora a VMware hoje seja mais famosa pela tecnologia VM moderna, a ideia da máquina virtual já existe há muito tempo.

Em 1965, o IBM Yorktown Research Center precisava de uma maneira de medir a eficácia de diferentes ideias de ciência da computação. A equipe de pesquisa queria alternar entre os recursos e medir os resultados. A equipe desenvolveu um esquema para dividir uma única máquina em partições menores. As partições menores gerenciariam seus próprios recursos. Eles seriam pequenas máquinas virtuais.

A ideia da VM foi bem-sucedida. A IBM começou a fazer sistemas operacionais baseados em máquinas virtuais. IBM System 370 (S / 370) e IBM System 390 (S / 390), ambos sistemas baseados em IBM VM / ESA, tornaram-se populares entre empresas e universidades porque permitiam que as instituições deixassem seus usuários compartilharem recursos de computação sem afetar os ambientes uns dos outros. A ideia também ajudou a criar o sistema operacional Unix e a linguagem de programação Java.

Máquinas virtuais modernas executadas em hipervisores. Os hipervisores são o software, firmware ou hardware responsável pela criação e execução de VMs. Existem muitos hipervisores disponíveis no mercado. KVM, Red Hat Enterprise Virtualization (RHEV), XenServer, Microsoft Hyper-V e VMware vSphere / ESXi são os jogadores proeminentes.

Hoje as máquinas virtuais estimularam o crescimento da computação em nuvem. Amazon AWS, Microsoft Azure, Google Cloud, Digital Ocean e outras empresas de nuvem dependem muito da tecnologia de virtualização.

Recipientes

Os contêineres criam virtualização no nível do sistema operacional. Eles funcionam como um pacote de software executável que isola os aplicativos de seu ambiente circundante. Dentro do pacote, um contêiner tem as propriedades necessárias como código, tempo de execução, bibliotecas do sistema e ferramentas para manter o aplicativo separado de influências externas. Ele é executado no sistema operacional da máquina host. Os contêineres compartilham bibliotecas e binários quando possível e apenas separam os recursos absolutamente necessários.

Em 1979, chamadas de sistema “chroot” podiam isolar processos para Unix. Foi a primeira semente da ideia do contêiner. A primeira tecnologia de contêiner começou com FreeBSD Jails em 2000. Um ano depois, o Linux VServer permitiu que várias máquinas Linux rodassem em um único host. Em 2004, o Oracle Solaris Zones forneceu funcionalidade semelhante ao FreeBSD Jails. Em 2006-2007, o Google desenvolveu o Process Container e depois o fundiu no Linux Kernel. Linux Containers (LXC) foi criado em 2008 para aproveitar as vantagens dos cgroups e namespacing do Linux. Em 2013, o Docker foi criado através da combinação de ideias LXC. Ele também adicionou ferramentas para criar e recuperar facilmente imagens de contêineres.

Docker

Docker é uma tecnologia de contêiner de código aberto baseada em LXC. É popular porque torna mais fácil criar, executar e implantar aplicativos em um ambiente independente. Docker não cria um sistema operacional completo como uma máquina virtual. Em vez disso, ele usa o kernel do sistema operacional do host e cria virtualização apenas para o aplicativo e as bibliotecas necessárias. Essa abordagem o torna muito mais leve do que as máquinas virtuais.

Os contêineres do Docker são criados a partir de imagens do Docker. As imagens do Docker podem ser vistas como instantâneos de máquinas. Os usuários podem facilmente iniciar um contêiner a partir de uma imagem. As imagens são criadas como camadas. Suponha que uma equipe de desenvolvimento precise de um contêiner com Apache e Python instalados em uma determinada versão do Linux. Um desenvolvedor pode baixar uma imagem do Linux do Docker Hub, iniciar um contêiner, instalar o Apache e Python, criar uma nova imagem do contêiner e compartilhar essa imagem. Outros membros da equipe não precisam passar pela mesma instalação. Ajuda a manter um ambiente consistente para todos.

O Docker também oferece suporte a aplicativos de script e multi-contêineres. Os usuários podem usar um Dockerfile baseado em texto para definir requisitos e, em seguida, criar contêineres por meio do Docker Compose. O exemplo acima de criação de um servidor Apache / Python / Linux também pode ser alcançado por meio deste processo. Com o Docker Compose, as equipes só precisam compartilhar o Dockerfile para criar o mesmo ambiente.

Docker tem ferramentas mais especializadas para tarefas complexas. Docker Swarm ajuda a orquestrar implantações de docker em grande escala.

Vagabundo

Vagrant é uma ferramenta de código aberto que ajuda a criar e manter máquinas virtuais. Funciona com VirtualBox, VMWare, AWS e outros provedores.

O Vagrant simplifica o gerenciamento de VMs. Usando um Vagrantfile, os desenvolvedores podem definir as propriedades da máquina virtual, como sistema operacional, instalações de software e outros. O Vagrantfile baseado em texto pode ser compartilhado através do controle de versão e a máquina necessária pode ser iniciada usando um comando simples como “vagrant up”. Os usuários podem então entrar na máquina como um servidor físico.

Quando usar Docker ou Vagrant

O uso de Docker ou Vagrant geralmente se resume à necessidade de contêineres ou máquinas virtuais. Aqui estão algumas semelhanças e diferenças entre o Docker e o Vagrant em termos de uso:

Semelhanças

Tanto o Docker quanto o Vagrant têm ambientes facilmente configuráveis ​​que podem ser controlados por meio de scripts. Eles também são compatíveis com a nuvem.

Diferenças

A máquina virtual Vagrant fornece separação de segurança baseada em kernel. A separação torna as máquinas virtuais menos arriscadas do que os contêineres. Mas os contêineres Docker são muito leves. Eles usam menos recursos e são rápidos na execução. Portanto, você pode ter muito mais contêineres em um único host do que máquinas virtuais. Além disso, iniciar e interromper contêineres é quase instantâneo em comparação com VMs. As VMs passam por todo o BIOS e ciclo de inicialização do sistema operacional.

A separação de segurança de uma máquina virtual torna uma falha de VM mais autocontida. Por outro lado, os contêineres compartilham recursos e podem ter um efeito de travamento em cascata. Além disso, as ameaças à segurança do contêiner podem atingir o kernel do sistema operacional host.

No entanto, a velocidade de execução e a pegada leve de contêineres tornam o Docker muito atraente para o desenvolvimento. Com uma arquitetura de microsserviço, os contêineres podem ter um bom desempenho porque os fatores de risco são atenuados pelo uso de microsserviços. Além disso, está havendo progresso para tornar o Docker mais seguro a cada dia.

Conclusão

Docker e Vagrant são tecnologias úteis que podem ajudar os desenvolvedores a melhorar sua produtividade. Se a segurança do aplicativo é uma preocupação, usar Vagrant e VMs pode ser uma boa ideia. Para desenvolvimento e compartilhamento rápidos, o Docker oferece uma vantagem. A maioria das equipes usa ambos para executar uma operação tranquila.

Referências:

Ferramentas úteis para jogadores de Linux
Se você gosta de jogar no Linux, é provável que tenha usado aplicativos e utilitários como Wine, Lutris e OBS Studio para melhorar a experiência de jo...
Jogos HD Remasterizados para Linux que nunca tiveram uma versão Linux anterior
Muitos desenvolvedores e editores de jogos estão apresentando remasterização em HD de jogos antigos para estender a vida da franquia, por favor, os fã...
Como usar o AutoKey para automatizar jogos Linux
AutoKey é um utilitário de automação de desktop para Linux e X11, programado em Python 3, GTK e Qt. Usando sua funcionalidade de script e MACRO, você ...