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