container tools

break the docker cli monoculture!


container tools

break the docker cli monoculture!


You're tired of the docker monoculture or you really don't like docker's daemon model. There are other tools.

image management

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

container management

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
example full command
docker and podman

they share the same flags

1docker run --rm -it \
2  --name some-container \
3  --runtime=runsc \
4  -e MY_ENV=1 \
5  -v $(pwd)/data:/data \
6  -p 80:8080 \
7  $img

less capable

1ctr run --rm -t \
2  --runc-binary=runsc \
3  --env MY_ENV=1 \
4  --mount src=$(pwd)/data,dst=/data \
5  $img