Sobes.tech
Junior

Qual é a diferença entre containerização e virtualização?

sobes.tech IA

Resposta da IA

A virtualização emula o hardware, permitindo executar múltiplos sistemas operativos num único servidor físico. Cada máquina virtual (VM) tem o seu próprio sistema operativo, núcleo, bibliotecas e aplicações. Isto proporciona um isolamento forte, mas requer recursos significativos (memória, CPU, espaço em disco) para cada VM.

A conteinerização funciona ao nível do sistema operativo, partilhando o núcleo do OS entre as aplicações. O contêiner contém apenas a aplicação, as suas dependências e bibliotecas. Isto torna os contêineres mais leves, rápidos de iniciar e menos consumidores de recursos do que as VM. O isolamento é alcançado ao nível de processos e espaços de nomes do OS.

Aqui estão as principais diferenças:

Parâmetro Virtualização Conteinerização
Nível de operação Hardware Sistema operativo
Isolamento OS e núcleo da VM Processos e espaços de nomes do OS
Recursos Elevados (para cada VM) Baixos (partilhando o núcleo)
Velocidade Arranque lento da VM Arranque rápido do contêiner
Tamanho da imagem Grande (inclui o OS) Pequeno (apenas a aplicação e dependências)
Portabilidade Requer compatibilidade ao nível da VM Alta (funciona em qualquer host)

Exemplo de configuração de uma máquina virtual:

// Ficheiro de configuração para qemu/kvm
[drive]
file=/var/lib/libvirt/images/minha-vm.qcow2
if=virtio
bus=virtio
cache=none

[cpu]
type=host

[memory]
size=4g

Exemplo de definição de Dockerfile para um contêiner:

# Usamos uma imagem base
FROM ubuntu:20.04

# Instalamos dependências
RUN apt-get update && apt-get install -y nginx

# Copiamos os ficheiros da aplicação
COPY html /var/www/html

# Abrimos a porta
EXPOSE 80

# Iniciamos a aplicação
CMD ["nginx", "-g", "daemon off;"]