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
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
docker-compose up/down
podman-compose up/down