Esta imagem pode ajudar você a entender a principal diferença entre eles:
Oquetodoselestêmemcomuméquetodasessastrêstecnologiasestãorelacionadasacontêineres.
Oscontêineressãoummecanismodevirtualizaçãolevequenãoexigeaconfiguraçãodeumamáquinavirtualemumaemulaçãodehardwarefísico.NoLinux,oqueelestêmemcomumsãoosrecursosdoKernelusados:cgroups
,namespaces(ipc,network,user,pid,mount)
.Elestambémtentamcriarambientesmaisseguroscriandocontêineressemprivilégioseintegrando-searecursosdesegurançacomoselinux
.EssastecnologiasexportamAPIsparamelhorintegraçãocomoutrossoftwares.
LXD e LXC
Esses dois integram a mesma família , onde:
-
lxc : interface do userspace para os recursos de contenção do kernel do Linux. Este é o cara que gerencia namespaces do Kernel, perfis do Apparmor e do SELinux, Chroots, recursos do Kernel e todas as outras coisas relacionadas ao kernel
-
lxd : é um "hypervisor" de contêiner. Ele é composto por um daemon (lxd), pela interface da linha de comandos (lxc) e por um plug-in do OpenStack. Esse cara foi desenvolvido para fornecer mais flexibilidade e recursos para o lxc, enquanto ainda o usa sob o capô.
Basicamente, um espaço de usuário autossuficiente do SO é criado com sua infraestrutura isolada. O lxc é subjacente mais diretamente aos recursos do sistema operacional para rede e armazenamento do que o Docker.
Você cria muitas máquinas virtuais, que têm isolamentos de espaço de usuário e de kernel, mas não são máquinas virtuais completas, pois não estão executando kernels separados, nem são paravirtualizados pelo mesmo motivo.
A Canonical é o principal patrocinador aqui, e a Oracle também está investindo horas de trabalho com essa tecnologia.
Tem algumas diferenças, sendo o maior deles o Engine que envolve os aplicativos com um sistema de arquivos independente, em vez de uma base "imagem do espaço do usuário". A ideia é conter o aplicativo e a imagem base para criar a impressão de que o aplicativo é um processo único dentro do mecanismo. O Docker usou a tecnologia lxc como base para se comunicar com o kernel, mas hoje ele usa sua própria biblioteca, libcontainer .
O sistema de arquivos é uma abstração para o Docker, enquanto o lxc usa recursos do sistema de arquivos diretamente. Rede também é uma abstração, enquanto com lxc você pode configurar endereços IP e configurações de roteamento com mais facilidade. Alguns sites "App Store like" estão sendo mantidos pela Microsoft, Amazon, VMware, IBM e outros players.
Docker. INC é o principal patrocinador aqui. O Vmware está também investindo nessa tecnologia.
Tecnologia relacionada de contêineres:
Estas são outras tecnologias de contêiner que o Linux tem: OpenVZ e Linux-VServer
Itens relacionados: