Docker container command Tips & Tricks
Here my idea is to use the Unix/Linux 'alias' command for most those common docker
container, network, volume sub-commands to form as shorten to give you more productivity while working on developing the docker images and playing around the newly constructing containers. This trick work on bash, zsh shells.
 |
Improve Productivity with smart work alias for Docker commands |
First examine the docker container listing with the powerful option '--format'
docker container ps -s \
--format "table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Size}}"
 |
docker ps command |
To get the logs of any applications that runs in containers we can use the following:
alias dkrlogs='docker logs'
alias dkrlogsf='docker logs -f '
 |
docker logs with alias trick |
List of the images
alias dkri='docker image ls'
 |
docker image list alias trick |
The container list
alias dkrcs='docker container ls'
 |
docker container list alias trick |
Remove the 'Exited' status container
alias dkrrm='docker rm'
 |
docker rm alias trick |
Docker top list to see the container inside process ID
alias dkrtop='docker top'
 |
docker top alias trick |
All the above nice commands will be helpful for the pipelines, Containerization makes CI/CD seamless.
We could add the following alias lines to our .bashrc or .bash_profile or .bash_aliases where you can add all simplified docker command as alias:
alias cleanall='docker container rm $(docker ps -a -q)'
alias dkrps='docker ps --all --format "table {{.ID}}\t{{.Names}}\t{{.Image}}\t{{.Status}}"'
Improved version of Bash aliases for Docker command
After a deep search on the internet for multiple docker alias examples, prepared the following to improve productvity.
## Basic Docker Aliases
alias dps="docker ps" # List running containers.
alias dpa="docker ps -a" # List all containers, including stopped ones.
alias di="docker images" # List all Docker images.
alias dip="docker container inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $1" # Get the IP address of a container.
alias dl="docker ps -l -q" # Get the ID of the most recently created container.
## Container Management
alias dstop='docker stop $(docker ps -a -q)' # Stop all containers.
alias drm='docker rm $(docker ps -a -q)' # Remove all containers.
alias drmf='docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q)' # Stop and remove all containers.
## Image Management
alias dri='docker rmi $(docker images -q)' # Remove all Docker images.
# Docker Volume management
alias dvls='docker volume ls'
alias dbclean='docker volume rm $(docker volume ls -q)'
## Docker log management
alias dlogs="docker logs "
alias dlogsf="docker logs -f "
## Docker compose commands simplified
dcup() {
cd /root/myproject
docker-compose up -d
echo "After up:"; docker-compose ps
}
dcdown() {
echo "Before down:"; cd /root/myproject; docker-compose ps
docker-compose down
}
dcbuidl() {
echo "Build with docker-compose"
cd /root/myproject
docker-compose up --build
}
How to know which docker volume connected to your container?
Let's create a container named as myweb with a docker volume attached as web-volume.
docker run -d --name myweb \
--mount source=web-volume,destination=/usr/share/nginx/html nginx
Using inspect sub-command on the container --format string with JSON forms is going to return a Json block:
docker container inspect \
--format '{{json .HostConfig.Mounts}}' myweb |jq
# simplified alias with parameterized
alias knv2c="docker container inspect --format '{{json .HostConfig.Mounts}}' $1"
kn2c myweb|jq
alias k2c="docker container inspect -f '{{json .HostConfig.Mounts }}'"
 |
docker container inspect with -f option json format |