The mental model is identical — images, containers, ports, volumes,
compose. The CLI mirrors docker's flags, your images
and docker-compose.yaml keep working, and the daemon is
what you don't install.
| Docker | cardinal |
|---|---|
docker pull nginx:alpine | cardinal pull nginx:alpine |
docker run -d --name web -p 8080:80 nginx | cardinal run -d -n web -p 8080:80 nginx |
docker ps | cardinal ps |
docker stop / start / restart | cardinal stop / start / restart |
docker rm -f web | cardinal rm -f web |
docker exec -it web sh | cardinal exec -i -t web sh (or cardinal console web) |
docker logs -f web | cardinal logs -f web |
docker images / docker rmi | cardinal images / cardinal rmi |
docker build -t myapp . | cardinal build -t myapp:v1 . |
docker commit web img:v1 | cardinal commit web img:v1 |
docker login / docker push | cardinal login / cardinal push |
docker compose up | cardinal up — reads cardinal.toml or compose YAML |
docker compose down | cardinal down |
docker network create | cardinal network create |
docker volume create / prune | cardinal volume create / prune |
docker stats | cardinal stats |
docker inspect | cardinal inspect |
docker system prune | cardinal system prune |
docker port web | cardinal port web — plus cardinal port add/remove without recreating |
curl -fsSL https://raw.githubusercontent.com/animesao/cardinal/main/install.sh | sudo bash
cardinal doctor sudo systemctl stop docker
sudo systemctl disable docker
# Existing images are pulled again from the same registries:
cardinal pull myapp:v1
cardinal run -d --restart always -n myapp -p 8080:80 -v data:/data \
-e KEY=value myapp:v1 # cardinal reads docker-compose.yaml as-is — just point it at the file:
cardinal up -f docker-compose.yaml
# Or convert to the native format with the Stack Builder:
# /stack/ → cardinal.toml → cardinal up -f cardinal.toml # Portainer, VS Code Dev Containers, CI — anything that speaks the
# Docker API works against cardinal's compatible endpoint:
cardinal serve -H 127.0.0.1 -p 2375 -d OCI/Docker images, compose YAML, the -p / -v / -e / --restart flags, volume and network concepts.
dockerd, containerd and their sockets. No daemon to start, upgrade, or babysit — the binary is the runtime.
Built-in cluster orchestration, FaaS, AES-256-GCM encrypted backups, audit logging, and a 27-blueprint registry.
The quick start takes under a minute; the full reference is in the docs. Your images and compose files come with you.
Read the docs Full comparison →