I believe that most of us use docker and docker-compose on daily basis, so I decided to share part of my .bashrc
file.
Maybe someone will find it useful...
Contents
- General
- Images
- Containers
- Networks
- Volumes
- Docker-Compose
Note about pattern I tried to follow for aliases:
- for docker commands first letter is always
d
, for docker compose isdc
- if command is related to images then next letter of alias is
i
, for containers isc
and so on... - following this pattern I found it pretty easy to remember all aliases
General
alias dve="docker -v"
alias dl="docker login --username=dragol"
Explanation
dve
- prints out current docker version
dl
- docker login, will prompt you for password
Images
alias dil="docker images"
alias dip="docker image prune -f"
Explanation
dil
- list all docker images available on my machine
dip
- remove all dangling images -f is flag for force
Containers
alias dcl="docker ps"
alias dcla="docker ps -a"
alias dcp="docker container prune -f"
alias dci="docker inspect"
alias dciip="docker inspect -f \"{{ .NetworkSettings.IPAddress }}\""
alias dcs="docker start"
alias dcd="docker down"
alias dcr="docker restart"
Explanation
dcl
- list running containers
dcla
- list all containers
dcp
- remove all dangling containers
dci
- here you need to pass container id in order to get various information about particular container
dciip
- returns container IP address
dcs
- here you need to pass container id in order to start container
dcd
- here you need to pass container id in order to stop container
dcr
- here you need to pass container id in order to restart container
Networks
alias dnl="docker network ls"
alias dni="docker network inspect"
alias dnrm="docker network rm"
alias dnp="docker network prune -f"
Explanation
dnl
- list networks
dni
- here you need to pass network id in order to see it's details
dnrm
- here you need to pass network id in order to delete it
dnp
- remove all dangling networks
Volumes
alias dvc="docker volume create"
alias dvl="docker volume ls"
alias dvrm="docker volume rm"
alias dvp="docker volume prune -f"
alias dvi="docker volume inspect"
Explanation
dvc
- here you need to pass volume name in order to create it
dvl
- list volumes
dvrm
- here you need to pass volume id in order to delete it
dvp
- remove all dangling volumes
dvi
- here you need to pass volumeid in order to see it's details
Docker-Compose
alias dcv="docker-compose -v"
alias dcu="docker-compose up"
alias dcd="docker-compose down"
alias dcb="docker-compose build --no-cache"
alias dcc="docker-compose config"
Explanation
dcv
- prints out docker compose version
dcu
- start docker compose
dcd
- stop docker compose
dcb
- new docker compose build from ground up
dcc
- check if docker-compose.yml file is valid
Basically, this commands I used the most, I did not post here functions from my .bashrc
file (~15), I used them for commands with more the one arguments. Feel free to use them and modify as needed.
Thank you for reading!
Top comments (7)
I suggest you to have a look at lazydocker. I use it allthe time, it's amazing.
Nice post some of these are very useful when you Docker all day!
I want to point out one caveat. When you alias the command the
<tab>
completion defaults to the list of files in the current directory. Aliased commands do not know the context anymore. This is not a problem for the aliases that do not require a subject (most of them). However, with the rest you will need to lookup and type in the subject name / container id. You will also lose the ability to peek at the list as you type by hitting<tab>
.For instance, when you do
docker container inspect <container-name>
it takes this without alias:doc<tab> conta<tab> in<tab> <tab: listing of container names>
and then continue typing partial container name<tab>
to complete.Tab completion also saves you from typos. Docker did a good job making sure you can use it wherever you need to.
I'll definitely be trying this out. Awesome post!
There is an application that I have developed to do this job. If you are interested, please review. github.com/enesusta/dcli
Did not try it, but by reading docs it looks great!
You have a typo for docker restart.
Happens all the time :) tnx