Using carrick with Docker
Beyond carrick run, carrick can build images and speak the Docker
Engine API — so you can use it in place of Docker for many workflows, or alongside it.
Build images — carrick build
carrick build builds an OCI image from a Dockerfile by running the real
kaniko
builder as a carrick guest, then loading the result into carrick's local store (or
pushing it with --push). No Docker daemon required.
$ carrick build -t myapp:latest -f Dockerfile .
Successfully built myapp:latest
$ carrick run myapp:latest /app/start
Flags mirror docker build: -t/--tag, -f/--file,
--build-arg KEY=VALUE, --no-cache/--cache,
--platform, and --push.
Drive carrick from Docker tooling — carrick serve
carrick serve exposes a Docker Engine API over a unix socket — a
daemonless translator over carrick's on-disk container store. Point a client at the
socket with DOCKER_HOST:
$ carrick serve --docker-api --host /tmp/carrick.sock &
$ curl --unix-socket /tmp/carrick.sock http://localhost/_ping
OK
It answers /_ping, /version, /info, image build
(/build), and the programmatic container lifecycle —
create / start / wait / remove — that SDKs such as
bollard
use to launch containers without shelling out to a CLI.
This surface is early. It targets programmatic clients, not the
interactive docker CLI: docker run (attach/stream),
docker ps, and docker images are not implemented yet, and
there is no network/volume-management API, compose orchestration, or
cgroup/capability enforcement. Use it to drive basic container lifecycle from code.
Registry auth — carrick login
Authenticate to private registries for pulls and pushes, like docker login:
$ carrick login -u USER --password-stdin registry.example.com
$ carrick logout registry.example.com In place of, or together with
- In place of: build with
carrick build, run withcarrick run(no VM), and drive code that needs an Engine-API socket withcarrick serve— no Docker Desktop, no Linux VM. - Together with:
carrick build→ push to a registry → run the image on Docker elsewhere; or runcarrick serveas a lightweight local Engine-API endpoint while a real Docker handles the rest.
See also the CLI reference and the compatibility baselines.