You're tired of the docker monoculture or you really don't like docker's daemon model. There are other tools.
command | build | pull | push | tag | rm |
---|---|---|---|---|---|
docker | docker build . |
docker pull $img |
docker push $img |
docker tag $img $tag |
docker rmi $img |
podman | podman build . |
podman pull $img |
podman push $img |
podman tag $img $tag |
podman rmi $img |
buildah | buildah bud . |
buildah pull $img |
buildah push $img |
buildah tag $img $tag |
buildah rmi $img |
img | img build . |
img pull $img |
img push $img |
img tag $img $tag |
img rmi $img |
ctr | - | ctr i pull $img |
ctr i push $img |
ctr i tag $img $tag |
ctr i rm $img |
crictl | - | crictl pull $img |
- | - | crictl rmi $img |
command | run | stop | rm | exec | cp | status |
---|---|---|---|---|---|---|
docker | docker run $img |
docker stop $con |
docker rm $con |
docker exec $con $cmd |
docker cp $src $dst |
docker ps / docker top |
podman | podman run $img |
podman stop $con |
podman rm $con |
podman exec $con $cmd |
podman cp $src $dst |
podman ps / podman top |
ctr | ctr run $img $id |
- | ctr c rm |
- | - | - |
crictl | crictl run $cconf $pconf |
crictl stop $con |
crictl rm $con |
crictl exec $con $cmd |
- | crictl ps |
they share the same flags
docker run --rm -it \
--name some-container \
--runtime=runsc \
-e MY_ENV=1 \
-v $(pwd)/data:/data \
-p 80:8080 \
$img
less capable
ctr run --rm -t \
--runc-binary=runsc \
--env MY_ENV=1 \
--mount src=$(pwd)/data,dst=/data \
$img
docker-compose up/down
podman-compose up/down