docker-engine-api

Diagnose and implement clients for the Docker Engine HTTP API over Unix sockets.

2|Updated Apr 29, 2026
One-click install
npx skills add https://github.com/Getty/p5-api-docker --skill docker-engine-api-getty
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: docker-engine-api
Source: https://github.com/Getty/p5-api-docker/tree/main/.claude/skills/docker-engine-api
Command: npx skills add https://github.com/Getty/p5-api-docker --skill docker-engine-api-getty

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Writing or debugging a client that talks directly to the Docker Engine HTTP API is full of traps the CLI hides: garbled multiplexed log frames, builds that report HTTP 200 but failed, filters that silently match nothing, and auth headers rejected over base64 padding. This Skill documents the failure modes the official reference states once and clients get wrong repeatedly. ## Core Features & Use Cases - API version negotiation: Explains /version probing, ApiVersion pinning, and how missing features fail silently as 404s or ignored parameters. - Stream and frame decoding: Covers the 8-byte multiplexed frame format for logs, attach, and exec, the Tty raw-stream difference, and newline-delimited JSON streams for build, pull, and push where errors arrive inside a 200 response. - Filters, auth, and paths: Details the JSON map-of-string-arrays filter shape, padded base64url X-Registry-Auth (including the anonymous e30= form), tar build contexts, and exec's two-call lifecycle. - Use Case: Your Perl or Python client prints header bytes in container logs. Use this Skill to identify the missing demultiplexing step and implement the frame reader correctly. ## Quick Start Ask the AI to explain why my Docker API client shows garbled bytes in container logs and how to demultiplex the stream.

Frequently Asked Questions about docker-engine-api

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
Why does my Docker API client show garbled bytes in container logs?

Containers created without a TTY return multiplexed frames, not plain text. Each frame has an 8-byte header with a stream type byte and big-endian uint32 length. Read the header, then read that many payload bytes, and repeat to demultiplex stdout and stderr.

How do I debug a Docker build that reports success but failed?

A failed build, pull, or push still returns HTTP 200. The error arrives as an errorDetail object inside the newline-delimited JSON stream. Scan every streamed event for errorDetail instead of trusting the HTTP status code.

Why do my Docker API filters match nothing?

The filters query parameter must be a JSON map of string to array of strings, such as {"dangling":["true"]}. Wrongly shaped filters do not error; the daemon silently returns unfiltered or empty results, so the bug surfaces as bad data rather than a 400.

Does the Docker Engine API work with Podman?

Podman serves a compatible API on a socket at unix://$XDG_RUNTIME_DIR/podman/podman.sock after enabling podman.socket, announcing API 1.41. The frame format is byte-identical, but event payloads, healthcheck fields, and error text should be verified against the actual engine.

Why does X-Registry-Auth fail with unexpected EOF?

The header must be base64url of a JSON object with padding included, because the daemon decodes with Go's base64.URLEncoding. Stripping the trailing = causes the parse error; the anonymous form is e30=, the encoding of an empty object.