Glossário e recursos#
Containers e Linux#
| Termo | Significado |
|---|---|
| Bundle | Pasta OCI com config.json e rootfs/ — o que um runtime de baixo nível corre. |
| Bounding set | O tecto de capabilities que qualquer descendente de um processo pode ter. |
| cgroup v2 | Hierarquia única em /sys/fs/cgroup para limitar recursos; escreve-se em ficheiros (memory.max). |
| CRI | Container Runtime Interface: API gRPC que o kubelet usa para falar com um runtime. |
| Delegação (cgroup) | Entregar uma subárvore de cgroups a um utilizador não-root (Delegate=yes no systemd). |
| Digest | Hash de conteúdo (sha256:…) que identifica um blob OCI. |
| Holder | (delonix) processo mínimo que segura um netns de vida longa para o plano de controlo poder reiniciar. |
| Image layout | Formato em disco de uma imagem OCI: index.json, oci-layout, blobs/sha256/. |
| Init (PID 1) | O primeiro processo do PID namespace; só recebe sinais que tenha tratado (excepto SIGKILL de fora). |
| Layer | Um diff de sistema de ficheiros (tar) numa imagem; empilham-se por ordem. |
| Namespace | Vista isolada de um recurso do kernel (pid, mnt, net, uts, ipc, user, cgroup, time). |
| OCI | Open Container Initiative: image-spec e runtime-spec. |
pivot_root |
Troca a raiz do mount namespace; ao contrário do chroot, permite desmontar a antiga. |
| Rootless | Correr sem privilégios de root no host, com o poder confinado a um user namespace. |
| Sandbox (CRI) | Ambiente de um pod (rede, cgroup pai) ao qual se juntam containers. |
| Seccomp | Filtro BPF sobre as syscalls que um processo pode fazer. |
| Supervisor | Processo por container que espera a sua morte e regista o resultado (sem daemon central). |
| User namespace | Mapeia uids/gids; permite ser «root» só sobre o namespace. |
| Whiteout | Ficheiro .wh.<nome> numa layer que significa «apaga <nome>». |
Rust e engenharia#
| Termo | Significado |
|---|---|
| Newtype | Um tipo com um só campo para carregar uma garantia (ContainerId). |
| Typestate | Estado codificado em parâmetro de tipo; transições ilegais não compilam. |
| Ratchet | Métrica que falha se sobe e se desce sem a base baixar — a melhoria fica registada. |
| Fail-closed | Recusar quando não se consegue cumprir, em vez de seguir sem a garantia. |
| Idempotente | Aplicar N vezes = aplicar uma; a prova é «zero escritas» a partir da segunda. |
| Reconciliação (3 vias) | Comparar desejado, actual e último aplicado, para distinguir remoção de edição alheia. |
| ADR | Architecture Decision Record: uma decisão de fronteira, com contexto e consequências. |
| MSRV | Minimum Supported Rust Version, declarado em rust-version. |
// SAFETY: |
Comentário obrigatório antes de um unsafe, a justificar as pré-condições. |
Referências canónicas#
Normas
- OCI Runtime Specification e Image Specification
- CRI API (
k8s.io/cri-api) ·crictl runc— o runtime de referência; lerlibcontainer/é um dos melhores exercícios
Linux (as páginas do man são o texto definitivo)
namespaces(7) · user_namespaces(7) · pid_namespaces(7) · mount_namespaces(7) · cgroups(7) · capabilities(7) · pivot_root(2) · unshare(2) · setns(2) · seccomp(2). E o Documentation/admin-guide/cgroup-v2.rst do kernel.
Rust
- The Rust Programming Language (o «livro») · Rust by Example · The Rustonomicon (
unsafe) · Rust API Guidelines - Rust Design Patterns · Effective Rust
- Ferramentas:
clippy,cargo-deny,cargo-fuzz,cargo-semver-checks
Contêineres e sistemas em Rust, para ler
youki— outro runtime OCI em Rustnix— a camada de chamadas de sistema usada aqui- O próprio
delonix-runtimee o seu manualdocs/dev/
Atalhos deste site#
| Ctrl + K ou / | Pesquisar em todo o tutorial |
| ↑ ↓ ↵ | Navegar e abrir resultados |
| Esc | Fechar a pesquisa |
| ◐ (canto superior) | Tema: automático → claro → escuro |