Virtualização e Containers
Aula 6 de 7
KVM / QEMU
# Verificar suporte a virtualização
grep -E "vmx|svm" /proc/cpuinfo
kvm-ok
# Criar VM com virt-install
virt-install \
--name ubuntu-vm \
--ram 2048 \
--vcpus 2 \
--disk size=20 \
--os-variant ubuntu22.04 \
--cdrom ubuntu-22.04.iso \
--network bridge=br0
# Gerenciamento
virsh list --all
virsh start ubuntu-vm
virsh shutdown ubuntu-vm
virsh console ubuntu-vm
virsh snapshot-create-as ubuntu-vm baseline
Docker
# Instalação
curl -fsSL https://get.docker.com | bash
# Comandos essenciais
docker ps # containers rodando
docker ps -a # todos containers
docker images # imagens locais
docker pull nginx:alpine
docker run -d --name web -p 80:80 nginx:alpine
docker exec -it web bash
docker logs -f web
# Dockerfile
cat << EOF > Dockerfile
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --production
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]
EOF
docker build -t meu-app .
docker compose up -d
Podman — Alternativa sem Daemon
# Podman é drop-in replacement para Docker
podman run -d --name web -p 80:80 nginx:alpine
podman ps
podman exec -it web bash
# Rootless (não precisa de sudo)
podman run --rm hello-world
# Pods (grupos de containers)
podman pod create --name meu-pod -p 8080:80
podman run --pod meu-pod -d --name nginx nginx:alpine
LXC / LXD
# LXD — containers como VMs
lxc launch ubuntu:22.04 meu-container
lxc exec meu-container -- bash
lxc list
lxc config set meu-container limits.cpu 2
lxc config set meu-container limits.memory 512MB
lxc snapshot meu-container snap1
lxc restore meu-container snap1
lxc publish meu-container --alias ubuntu-base
Comparação
| Tecnologia | Isolamento | Inicialização | Consumo |
|---|---|---|---|
| KVM | Completo (hardware) | Minutos | Alto |
| Docker | Namespaces + cgroups | Segundos | Baixo |
| Podman | Namespaces + cgroups | Segundos | Baixo |
| LXC/LXD | Namespaces + cgroups | Segundos | Baixo |
Docker é padrão para aplicações. LXD é útil para ambientes completos (VM-like). KVM para isolamento máximo. Podman para ambientes rootless.