Comparação entre contêiner do Docker e máquina virtual (VM)

Docker é um mecanismo de contêiner de aplicativos de código aberto. O Docker pode fornecer software rapidamente, separando o aplicativo da infraestrutura subjacente.

A operação de máquinas virtuais tradicionais requer altos recursos, incluindo espaço em disco, memória e desempenho do processador. Cada máquina virtual requer uma cópia completa do sistema operacional e dos aplicativos, o que gera alguma sobrecarga na utilização de recursos e no tempo de inicialização.

A tecnologia de contêineres é mais uma evolução no campo da virtualização, que adota um método de virtualização mais leve. A tecnologia de contêiner utiliza a função de contêiner do sistema operacional (como contêineres Linux) e realiza o isolamento de aplicativos e a virtualização do ambiente operacional isolando os namespaces, sistemas de arquivos e grupos de controle de recursos (cgroups) de processos.

Como ferramenta principal para a criação de contêineres, o Docker se desenvolveu rapidamente nos últimos anos. dispositivo ou dispositivo Windows) etc.) para realizar a virtualização instalando e executando nele, para que o programa aplicativo possa ser completamente separado do dispositivo subjacente e possa ser migrado e implantado de forma flexível entre máquinas físicas, para que o engenheiro de operação e manutenção pode se livrar da tediosa implantação do ambiente, o que melhora muito a eficiência do trabalho e reduz o tempo de implantação. riscos potenciais no processo.

Os contêineres do Docker têm as quatro características a seguir:

Leve: os contêineres do Docker são baseados na tecnologia de virtualização no nível do sistema operacional. Em comparação com as máquinas virtuais tradicionais, os contêineres são mais leves. Cada contêiner compartilha o kernel do sistema operacional do host e contém apenas o aplicativo e as dependências de que ele precisa para executar, portanto, os contêineres iniciam e param muito rapidamente.

Isolamento: cada contêiner do Docker é isolado um do outro e possui seu próprio sistema de arquivos, espaço de processo e interface de rede. Isso significa que os contêineres são independentes uns dos outros e não afetam uns aos outros. Você pode executar vários contêineres no mesmo host ao mesmo tempo, e cada contêiner é como um ambiente virtual independente.

Portabilidade: os contêineres do Docker podem ser executados em diferentes sistemas operacionais e plataformas de nuvem e são altamente portáteis. Um aplicativo e suas dependências dentro de um contêiner são empacotados em uma unidade portátil independente que pode ser facilmente implantada e migrada entre os ambientes de desenvolvimento, teste e produção.

Escalabilidade: os contêineres do Docker podem ser facilmente dimensionados horizontalmente. Ao usar ferramentas de orquestração de contêineres (como Docker Compose, Kubernetes etc.), várias instâncias de contêineres podem ser iniciadas, interrompidas e gerenciadas automática ou manualmente de acordo com a demanda para atender a diferentes requisitos de carga.

Docker Containers x Máquinas Virtuais (VMs)

Os contêineres do Docker e as tecnologias tradicionais de VM são diferentes na implementação técnica. A figura a seguir mostra a composição lógica dos contêineres VM e Docker:

Máquina virtual (VM):
Hypervisor é usado para fornecer uma plataforma em execução para máquinas virtuais e gerenciar a operação do sistema operacional em cada VM. Cada VM deve ter seu próprio sistema operacional, aplicativos e arquivos dependentes necessários.

Contêiner Docker:
use o mecanismo Docker para agendamento e isolamento, o que melhora a utilização de recursos e permite que mais instâncias de contêiner sejam executadas com o mesmo recurso de hardware; cada contêiner tem seu próprio espaço de usuário isolado.

 

Comparação de máquinas virtuais e contêineres Docker

Comparado com a VM, o Docker container, como um método de virtualização leve, tem as seguintes vantagens significativas em termos de aplicação:

  • Os contêineres do Docker podem ser iniciados e interrompidos rapidamente em segundos, o que é significativamente melhorado em comparação com as máquinas virtuais tradicionais.

  • Os contêineres do Docker têm baixos requisitos de recursos do sistema e milhares de contêineres do Docker podem ser executados no mesmo host ao mesmo tempo.

  • Os contêineres do Docker facilitam que os usuários obtenham e atualizem imagens de aplicativos por meio de operações semelhantes ao Git.

  • Os contêineres Docker realizam criação automática e implantação flexível por meio de arquivos de configuração Dockerfile, melhorando a eficiência do trabalho.

  • Além de executar os aplicativos nele, o contêiner Docker basicamente não consome recursos adicionais do sistema, garantindo o desempenho do aplicativo e minimizando a sobrecarga do sistema.

A figura a seguir pode entender intuitivamente a diferença entre o contêiner Docker e o método VM tradicional:

 

Os cinco componentes do Docker

Construção do espelho:

A base de um contêiner do Docker é uma imagem do Docker, que é um modelo somente leitura que contém o sistema de arquivos e as dependências necessárias para executar um aplicativo. Um espelho pode ser criado escrevendo um Dockerfile e executando um comando build.As etapas de construção de um espelho são definidas no Dockerfile, como instalar pacotes de software e configurar o ambiente.

Criação de contêiner:

Os contêineres podem ser criados com base em imagens específicas usando a ferramenta de linha de comando do Docker ou a API do Docker. Ao criar um contêiner, você pode especificar o nome do contêiner, configurações de rede, mapeamento de porta e outros parâmetros. Cada contêiner possui um ID exclusivo e um ambiente de tempo de execução isolado.

Isolamento do sistema de arquivos:

Os contêineres do Docker usam tecnologias como namespaces e grupos de controle (cgroups) do kernel do Linux para obter o isolamento do sistema de arquivos entre os contêineres. Cada contêiner tem sua própria visão do sistema de arquivos, mas eles compartilham o kernel do sistema operacional do host.

Execute o aplicativo:

Aplicativos e processos dentro de contêineres podem ser executados em um ambiente de tempo de execução isolado. Os contêineres do Docker podem executar qualquer aplicativo que possa ser executado no sistema operacional, como servidores Web, bancos de dados etc. Os aplicativos dentro de contêineres podem fornecer serviços por meio de comunicação de rede com o host ou outros contêineres.

Gerenciamento de contêineres:

O Docker fornece um conjunto de ferramentas de linha de comando e APIs para gerenciar e monitorar contêineres. Essas ferramentas podem iniciar, parar, reiniciar, excluir contêineres e muito mais. Ao mesmo tempo, o Docker também oferece suporte a ferramentas de orquestração de contêineres, como Docker Compose e Kubernetes, que podem ser usadas para gerenciar e expandir automaticamente vários contêineres.

Aqui estão algumas tecnologias comuns de conteinerização:

Docker: Docker é uma das plataformas de conteinerização mais populares que existem. Ele fornece um formato de contêiner padrão e um ambiente de tempo de execução que permite aos desenvolvedores empacotar um aplicativo e suas dependências em um contêiner portátil autossuficiente. O Docker fornece ferramentas e recursos poderosos para criar, implantar e gerenciar aplicativos em contêineres.

Contêiner de applet FinClip : FinClip é uma plataforma de contêiner de applet com foco em dispositivos móveis. Ele fornece uma solução de conteinerização de pequenos programas, permitindo que os desenvolvedores incorporem e executem pequenos programas em aplicativos móveis. O FinClip fornece uma série de APIs e ferramentas, permitindo que os desenvolvedores integrem applets em aplicativos móveis de maneira conteinerizada e interajam com as funções dos aplicativos móveis.

Kubernetes (K8s): Kubernetes é uma plataforma de orquestração de contêineres de código aberto para automatizar a implantação, dimensionamento e gerenciamento de aplicativos em contêineres. O Kubernetes fornece funções como orquestração de contêineres, descoberta de serviços, balanceamento de carga e dimensionamento automático, permitindo que os desenvolvedores executem aplicativos em contêineres de maneira confiável e elástica.

Apache Mesos: Apache Mesos é um kernel de sistema distribuído que fornece gerenciamento de recursos e funções de agendamento de tarefas. Ele oferece suporte à implantação e gerenciamento de aplicativos em contêiner e pode ser integrado a uma variedade de tempos de execução de contêiner.

Cloud Foundry: Cloud Foundry é uma plataforma em contêiner de software livre para criar, implantar e gerenciar aplicativos. Ele fornece um ambiente de desenvolvimento e tempo de execução baseado em contêiner que oferece suporte a várias linguagens de programação e estruturas de aplicativos.

LXC (Linux Containers): LXC é uma tecnologia de virtualização leve baseada no kernel do Linux para conteinerização. Ele fornece uma maneira de isolar processos em namespaces independentes para obter isolamento de aplicativos e gerenciamento de recursos.

Essas tecnologias têm suas próprias características e cenários de aplicativos, mas seu objetivo comum é fornecer um ambiente em contêiner conveniente, portátil e escalável para simplificar a implantação e o gerenciamento de aplicativos e fornecer maior confiabilidade e utilização de recursos.

Acho que você gosta

Origin blog.csdn.net/Lydiasq/article/details/130977862
Recomendado
Clasificación