/zsh-containers

ZSH plugin to handle podman and docker aliases

Primary LanguageShellMIT LicenseMIT

zsh-containers

zsh-containers is a zsh plugin that provides aliases and better interoperability between podman and docker commands based on which you have installed.

installing

zinit

Add this to your zinit config (.zshrc):

zinit light redxtech/zsh-containers

# it also works with turbo mode:
zinit ice wait lucid
zinit load redxtech/zsh-containers

oh-my-zsh

Install it with your favourite zsh package manager, or clone it directly to your $ZSH_CUSTOM/plugins directory with git, and add containers to the plugins array in your .zshrc file:

plugins=(... containers)

completion

i would recommend using greymd/docker-zsh-completion for up-to-date completions pulled weekly from upstream.

podman -> docker

since podman and docker commands are mostly interchangable, people will often use alias docker="podman", and it usually works fine - however, if you also use docker compose, it might be not work if you run compose via docker compose, since podman compose isn't a command - you have to run podman-compose, which isn't exactly compatible with the alias method.

to solve that, i've made a docker function, that detects if the first argument is compose. if that's the case, it removes that argument, and passes the rest to podman-compose. for any other first argument, it passes them all to podman.

if you don't use podman or podman-compose, then this plugin won't change any of this.

docker aliases

Alias Command Description
dbl docker build Build an image from a Dockerfile
dcin docker container inspect Display detailed information on one or more containers
dcls docker container ls List all the running docker containers
dclsa docker container ls -a List all running and stopped containers
dib docker image build Build an image from a Dockerfile (same as docker build)
dii docker image inspect Display detailed information on one or more images
dils docker image ls List docker images
dipu docker image push Push an image or repository to a remote registry
dirm docker image rm Remove one or more images
dit docker image tag Add a name and tag to a particular image
dlo docker container logs Fetch the logs of a docker container
dnc docker network create Create a new network
dncn docker network connect Connect a container to a network
dndcn docker network disconnect Disconnect a container from a network
dni docker network inspect Return information about one or more networks
dnls docker network ls List all networks the engine daemon knows about, including those spanning multiple hosts
dnrm docker network rm Remove one or more networks
dpo docker container port List port mappings or a specific mapping for the container
dpu docker pull Pull an image or a repository from a registry
dr docker container run Create a new container and start it using the specified command
drit docker container run -it Create a new container and start it in an interactive shell
drm docker container rm Remove the specified container(s)
drm! docker container rm -f Force the removal of a running container (uses SIGKILL)
dst docker container start Start one or more stopped containers
drs docker container restart Restart one or more containers
dsta docker stop $(docker ps -q) Stop all running containers
dstp docker container stop Stop one or more running containers
dtop docker top Display the running processes of a container
dvi docker volume inspect Display detailed information about one or more volumes
dvls docker volume ls List all the volumes known to docker
dvprune docker volume prune Cleanup dangling volumes
dxc docker container exec Run a new command in a running container
dxcit docker container exec -it Run a new command in a running container in an interactive shell

docker compose aliases

Alias Command Description
dco docker-compose Docker-compose main command
dcb docker-compose build Build containers
dce docker-compose exec Execute command inside a container
dcps docker-compose ps List containers
dcrestart docker-compose restart Restart container
dcrm docker-compose rm Remove container
dcr docker-compose run Run a command in container
dcstop docker-compose stop Stop a container
dcup docker-compose up Build, (re)create, start, and attach to containers for a service
dcupb docker-compose up --build Same as dcup, but build images before starting containers
dcupd docker-compose up -d Same as dcup, but starts as daemon
dcupdb docker-compose up -d --build Same as dcup, but build images before starting containers and starts as daemon
dcdn docker-compose down Stop and remove containers
dcl docker-compose logs Show logs of container
dclf docker-compose logs -f Show logs and follow output
dcpull docker-compose pull Pull image of a service
dcstart docker-compose start Start a container
dck docker-compose kill Kills containers

credit

thanks to the docker and docker-compose oh-my-zsh plugins for inspiration for the aliases.

author

zsh-containers © gabe dunn, released under the MIT License.