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;"]