Podman
Diário Podman
# Diário de operações e inventário — Podman / adam-pinkman > Diário operacional detalhado de recursos Podman. Não guardar credenciais, valores de variáveis de ambiente, tokens, chaves ou conteúdo de `.env`. `SERVER_LOG.md` mantém o histórico geral do servidor. ## 2026-10-27 10:57:32 +00:00 — Inventário inicial e criação do diário **Tipo:** inspeção **Estado:** sucesso **Host/contexto:** `adam-pinkman` (`192.168.3.114`); Podman rootful como `root`; Podman `5.8.9` **Pedido/motivo:** criação de um skill e diário para registar operações e inventariar recursos Podman. **Executado por:** agente via SSH/Paramiko; fingerprint Ed25519 validado contra o valor confirmado pela consola. ### Recursos e alterações - Inventário apenas de leitura; nenhum recurso Podman foi criado ou alterado. - `podman ps -a --no-trunc`: não listou contentores. - `podman images --no-trunc`: não listou imagens. - Rede observada: `podman` (ID `2f259bab93aaaaa2542ba43ef33eb990d0999ee1b9924b557b7be53c0b7a1bb9`), driver `bridge`. Subnet/gateway não recolhidos nesta inspeção. - `podman volume ls`: não listou volumes. - Podman info: host `adam-pinkman`, `rootless=false`, graph root `/var/lib/containers/storage`, run root `/run/containers/storage`; runtime OCI `crun` validado na operação de instalação. - Builds e diretórios de build: nenhum observado/identificado. - Validação: comandos de listagem e `podman info` terminaram com código 0. Contexto rootful; não foi inspecionado contexto rootless de outros utilizadores. ### Erros e riscos - A primeira tentativa local de preparar o comando de inventário falhou por erro de sintaxe Python (código 1); corrigida sem executar comandos no servidor. A recolha seguinte terminou com código 0. - Inventário limitado ao contexto rootful de `root`; recursos rootless de outros utilizadores não foram verificados. ### Seguimento - Atualizar o inventário após cada operação Podman e distinguir sempre rootful de rootless. ## Inventário atual **Recolhido:** 2026-10-27 10:57:32 +00:00 (hora UTC do ambiente). **Âmbito:** contexto rootful de `root` no host `adam-pinkman`; sem verificação rootless de outros utilizadores. - **Contentores/pods:** nenhum contentor observado; pods não inspecionados separadamente. - **Imagens:** nenhuma observada. - **Redes:** rede `podman` (bridge; ID acima); subnet/gateway não observados. - **Volumes:** nenhum observado. - **Builds/diretórios:** nenhum observado. - **Armazenamento:** graph root `/var/lib/containers/storage`; run root `/run/containers/storage`. ## 2026-10-27 11:02:05 +00:00 — Build e publicação Hello World (em curso) **Tipo:** build | criação **Estado:** sucesso **Host/contexto:** `adam-pinkman`; rootful; utilizador `root`; Podman `5.8.9` **Pedido/motivo:** servir páginas Home, Server e Podman na porta 8081. **Executado por:** agente via SSH/Paramiko e Podman. ### Recursos e alterações - Build context local: `hello-world/`; Containerfile `hello-world/Containerfile`; aplicação `hello-world/server.py` (Python standard library, sem dependências externas). - Pretendido: imagem `adam-pinkman-hello:latest`; contentor `adam-pinkman-hello`; bind de host `0.0.0.0:8081` para container `8081/tcp`; logs montados read-only em `/data`. - Inspeção prévia: sem contentores/imagens/volumes; rede default `podman` bridge. Porta TCP 8081 não pôde ser inspecionada via `ss` pois o binário está ausente. - Build context no servidor: `/opt/adam-pinkman-hello/build`; Containerfile `/opt/adam-pinkman-hello/build/Containerfile`; aplicação `/opt/adam-pinkman-hello/build/server.py`. Build sem dependências externas da aplicação, base `docker.io/library/python:3.13-alpine`; imagem `localhost/adam-pinkman-hello:latest`, ID `64da8212293f9448a515bc59cb9848ef7acd44998519e1e5a599d15c11fafecd`, digest `sha256:8f73d05862e09006e1c5bed17ee76c50840285a28c8c6e73cda2bfa274c176b2`. - Primeira tentativa `podman run` falhou (código 127) por ausência do executável `iptables` exigido por netavark; o contentor de tentativa `aa1d7e22301ea7aa7d0d797212b44de95d2cd7e5295e84ee77ea4ecd200358ed` ficou `created` e foi removido. Instalado `iptables` `1.8.13-r0`, backend nf_tables, necessário à configuração de rede. - Contentor atual: `adam-pinkman-hello`, ID `7c19d292eeb4d5d8050e9d86b473ca6ed4b2ab4fefef8574dfbb1536a6c13763`, estado `running`, criado `2026-10-27T11:02:57Z`, imagem acima, comando `python3 /app/server.py`, política de reinício `always`, sem healthcheck definido. - Rede `podman` bridge, ID `2f259bab93aaaaa2542ba43ef33eb990d0999ee1b9924b557b7be53c0b7a1bb9`, subnet `10.88.0.0/16`, gateway `10.88.0.1`; IP do container `10.88.0.3/16`, alias curto `7c19d292eeb4`. - Publicação de porta: host `0.0.0.0:8081/tcp` -> container `8081/tcp`. Bind mount read-only `/opt/adam-pinkman-hello/data` -> `/data`, contém `server-info.md`, `SERVER_LOG.md` e `PODMAN-LOG.md`. Nenhum volume nomeado. Nenhum pod. - Testes HTTP locais em `http://192.168.3.114:8081/`, `/server` e `/podman`: os três responderam HTTP 200, label da página e conteúdo esperado; repetido após sincronizar os diários finais. Inspeção Podman confirmou estado, bind, IP e mounts. Código de saída 0 nas verificações finais. - Aplicação não define healthcheck; estado de saúde: não configurado. Três tentativas de asserção local usaram marcadores com acentos mal codificados no pipeline PowerShell/Python e falharam sem afetar o servidor; validação seguinte com marcadores ASCII passou nos três endpoints. A tentativa inicial de inspect do healthcheck também falhou por campo nulo, sem impacto no container. ### Erros e riscos - Alteração persistente adicional: pacote `iptables` instalado no host para a rede Podman funcionar. Não foi testado reboot real; política de reinício `always` foi inspecionada. ### Seguimento - Monitorizar conforme necessário; após cada alteração futura atualizar este diário e sincronizar os ficheiros servidos pelo site. **Concluído:** 2026-10-27 11:04:14 +00:00 (hora UTC do ambiente). ## Inventário atual **Recolhido:** 2026-10-27 11:03:18 +00:00 (hora UTC do ambiente). **Âmbito:** rootful como `root` em `adam-pinkman`, Podman `5.8.9`. - **Contentor:** `adam-pinkman-hello`, ID `7c19d292eeb4d5d8050e9d86b473ca6ed4b2ab4fefef8574dfbb1536a6c13763`; `running`; criado `2026-10-27T11:02:57Z`; restart `always`; healthcheck não configurado. - **Imagem:** `localhost/adam-pinkman-hello:latest`, ID `64da8212293f9448a515bc59cb9848ef7acd44998519e1e5a599d15c11fafecd`, digest `sha256:8f73d05862e09006e1c5bed17ee76c50840285a28c8c6e73cda2bfa274c176b2`; base `docker.io/library/python:3.13-alpine`. - **Build:** `/opt/adam-pinkman-hello/build`; Containerfile e `server.py` nesse diretório. - **Rede/IP:** rede `podman`, bridge, `10.88.0.0/16`, gateway `10.88.0.1`; IP `10.88.0.3/16`; alias `7c19d292eeb4`. - **Porta:** `0.0.0.0:8081` no host -> `8081/tcp` no container. - **Mounts/volumes:** bind read-only `/opt/adam-pinkman-hello/data:/data`; nenhum volume nomeado. - **Conteúdo:** `/` Home (`server-info.md`), `/server` (`SERVER_LOG.md`), `/podman` (`PODMAN-LOG.md`).