delonix serve docker-api
Fatia da API Docker Engine, num socket unix — ciclo de vida completo de um container, não só leitura.
A slice of the Docker Engine API, on a unix socket — full container lifecycle, not just reads.
Serve o suficiente da API real do Docker Engine (protocolo capturado ao vivo
contra um docker CLI real, versão negociada via o header Api-Version da
resposta ao /_ping) para docker version/ps/images/
info apontados via DOCKER_HOST=unix://<socket> funcionarem contra o
estado REAL do delonix. Desde a v0.26.0, também o ciclo de vida completo de um container —
POST /containers/create|start|stop|kill|wait|restart|rename,
DELETE /containers/{id}, GET /containers/{id}/json — todos a delegar nas
mesmas funções do CLI (cmd_run/cmd_stop/cmd_kill/...), zero
lógica duplicada; é o suficiente para docker compose up apontado a este socket
funcionar. Mesma postura de segurança do socket de gestão: 0600 + SO_PEERCRED (só o
próprio utilizador). Fora de escopo: exec/attach interactivo (HTTP hijacking) e
--restart (precisa de um supervisor fork() cru, recusado com erro claro);
qualquer rota não implementada dá 404 claro.
Serves enough of the real Docker Engine API (protocol captured live against a
real docker CLI, version negotiated via the Api-Version header on the
/_ping response) for docker version/ps/images/
info pointed at DOCKER_HOST=unix://<socket> to work against
delonix's REAL state. Since v0.26.0, also the full container lifecycle —
POST /containers/create|start|stop|kill|wait|restart|rename,
DELETE /containers/{id}, GET /containers/{id}/json — all delegating to
the same CLI functions (cmd_run/cmd_stop/cmd_kill/...), zero
duplicated logic; enough for docker compose up pointed at this socket to work. Same
security posture as the management socket: 0600 + SO_PEERCRED (owner only). Out of
scope: interactive exec/attach (HTTP hijacking) and --restart (needs a
raw fork() supervisor, refused with a clear error); any unimplemented route gives a
clear 404.
📄 Implementação real em Rust: cmd/dockerapi.rs
Usage: dlx serve docker-api [OPTIONS]
Options:
--addr <ADDR> Socket address (default: `$DELONIX_DOCKER_ADDR` or `unix:///run/delonix-docker.sock`)
--l18n <en|pt> Output language: `en` (default) or `pt` (Portuguese, pt_AO). Also settable via `$DELONIX_L18N`. Global — works before any subcommand
--matrix Print the coverage matrix and exit, without serving anything. This layer is a SLICE of the Docker API, and third-party tooling deserves to know where it ends before it hits a 404 mid-run
-h, --help Print helpExemplos
delonix serve docker-api &DOCKER_HOST=unix:///run/delonix-docker.sock docker psDOCKER_HOST=unix:///run/delonix-docker.sock docker compose up -dLaboratórioLab
Aponta o próprio docker CLI para o delonix, sem Docker
Desktop nenhum instalado.
delonix serve docker-api --addr unix:///tmp/delonix.sock &
DOCKER_HOST=unix:///tmp/delonix.sock docker ps
DOCKER_HOST=unix:///tmp/delonix.sock docker run -d --name web nginxPoint the real docker CLI at delonix, with no Docker
Desktop installed at all.
delonix serve docker-api --addr unix:///tmp/delonix.sock &
DOCKER_HOST=unix:///tmp/delonix.sock docker ps
DOCKER_HOST=unix:///tmp/delonix.sock docker run -d --name web nginxDesafioChallenge
Aponta um docker-compose.yml real para o mesmo
socket (DOCKER_HOST=unix://... docker compose up) e confirma que funciona de ponta a
ponta contra o delonix.
Point a real docker-compose.yml at the same socket
(DOCKER_HOST=unix://... docker compose up) and confirm it works end to end against
delonix.