Hacks for Docker
Am I using the docker the right way in my dev machine? Any hidden things happening with my docker? Do you have this in mind? Spend few minutes to understand the Basics for beginers.
Docker Images
List Images
docker images
Tag Image
docker tag :latest :0.0.1
docker tag :latest :0.0.1
List Dangling Images
docker images -f dangling=true
Delete Unused Images / Remove Dangling Images
docker rmi $(docker images -f dangling=true -q)
Delete all the images
docker rmi $(docker images -q)
Docker compose
To run default docker-compose.yml file
docker-compose up -d
To run custom .yml file (docker-compose-sample.yml)
docker-compose -f docker-compose-sample.yml up -d
To run multiple .yml files
docker-compose -f sample.yml -f sample2.yml up -d
CONTAINERS
List the Containers
docker ps
List the Containers with exist status
docker ps -a
Check the logs of the Container
docker logs
Stop Container
docker stop
Remove Container
docker stop && docker rm
NOTE : To delete the container, do stop and then remove. We can’t remove the container when it is running.
Container inspection
docker container inspect
To Remove all Containers
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
Remove a container and its volume
docker rm -v
To restart all container
docker restart $(docker ps -a -q)
Stack
Deploy stack of services
docker stack deploy -c my_stack_file_name.yml my_stack_name
List Stacks running
docker stack ls
Remove the stack
docker stack rm my_stack_name
Service
List services
docker service ls
List services with filter
docker service ls -f "id=0bcjw"
docker service ls --filter mode=global
Service Logs
docker service logs --details
docker service logs --follow #continue streaming
Format Services
docker service ls --format "{{.ID}}: {{.Mode}} {{.Replicas}}"
Inspect Services
docker service inspect
docker service inspect --pretty
Volume
List Volumes
docker volume ls # list all the volumes
Inspect Volume
docker volume inspect # details about the volume
List Dangling Volumes
docker volume ls -f dangling=true
Remove Volume
docker volume rm
Remove Dangling Volumes
docker volume rm $(docker volume ls -f dangling=true -q)
Clean up the docker
After working with Docker for some time, you start accumulating development junk: lot of the unused volumes, networks, exited containers and unused images, other way called as dangling images, dangling volumes.
Dangling Images:
Dangling images: Dangling images are layers that have no relationship to any tagged images. They no longer serve a purpose and consume disk space. They can be located by adding the filter flag, -f
with a value of dangling=true
to the docker images
. Here is frequently used commands on docker images https://medium.com/@JinnaBalu/docker-frequently-used-commands-on-images-b812d76a4b8e
Dangling Volumes:
Point of volumes is to exist independent from containers, when a container is removed, a volume is not automatically removed at the same time. When a volume exists and is no longer connected to any containers, however, it’s called a dangling volume.
One Command to clean all docker junk
docker system prune
prune
is a very useful command (also works for volume
and network
sub-commands)
Prune can also be replcaed by
Remove all dangling volumes
docker volume rm $(docker volume ls -q -f "dangling=true")
Remove all dangling images
docker rmi $(docker images -q -f "dangling=true")
Remove Exited Containers
docker rm $(docker ps -q -f "status=exited")
Remove Container along with Volume
docker rm -v container_name