Docker commands overview
- Maciej Biel
- 7 November 2022
To avoid typing sudo
every time before executing docker
command, it’s recommended to configure this.
Commands overview
docker
docker --version
- shows docker version.
docker login
docker login
- singns in to Docker Hub.
docker pull
docker pull <image>
- pulls image from Docker Hub.
docker push
docker push <image>
- pushes images to Docker Hub.
docker build
docker build <container>
- builds container from image.
docker run
docker run <container>
- creates new independent container from image and runs it.docker run --name <name>
- sets name of container, otherwise Docker will provide random name for created container.docker run -p <dest>:<src>
- publishes container ports to public.docker run -e NAME1=value1 -e NAME2=value2
- sets enviroment variables.docker run -d
- runs container in background.docker run --rm
- removes the container when it exits.
docker exec
docker exec <container> <command>
- runs command inside existing and running container.
docker rename
docker rename <old_name> <new_name>
- renames container.
docker start
docker start <container>
- starts existing container by name or id.
docker stop
docker stop <container>
- stops existing container by name or id.
docker kill
docker kill <container>
-docker stop
waits until container stops anddocker kill
immediately kills the container.
docker restart
docker restart <container>
- restarts container by name or id.
docker system
docker system df
- shows information about disk space used.docker system prune -af
- removes everything (unused containers, networks, images, volumes etc.)
docker ps
docker ps
- shows running containers.docker ps -a
- shows all running and stopped containers.
docker rm
docker rm <container>
- removes container by name or id.
docker rmi
docker rmi <image>
- removes image by name or id.docker rmi $(docker images -f "dangling=true" -q)
- when new image is build (e.g. by making changes in Dockerfile), old ones stays untagged (dangled) and this command clears these images.
docker container
docker container ls
- lists running containers.docker container ls -a
- lists all containers.docker container prune
- removes all stopped containers.
docker images
docker images
- lists all images.docker images -f “dangling=true” -q
- lists untagged images.
docker logs
docker logs <contanier>
- show logs of container by id or name. Useful when container crashes or doesn’t start.
docker stats
docker stats
- shows live statistics of containers resources usage.
docker commit
docker commit <conatainer> <image-name>
- creates a new image of edited container.
docker compose
docker compose build
- builds containers fromdocker-compose.yml
file.docker compose exec <container-name> <command>
- run command in existing and running container. For example we can access container shell by typingdocker compose exec web sh
.docker compose run --rm <container-name> <command>
- creates new independet container and removes it when it exits. Useful whendocker compose up
fails, because for example some gems are not installed, and executingdocker compose run --rm web bundle install
will solve the problem.docker compose up
- starts all containers listed indocker-compose.yml
file.docker compose -d up
- starts all containers in background.docker compose down
- stops all running containers listed indocker-compose.yml
file.
Example use case of Docker
Example of setting up PostgreSQL and pgAdmin for quick demonstration.
# Pull images from docker hub
docker pull dpage/pgadmin4
docker pull postgres:13
# Show images and running containers
docker images
docker ps
# Run contanier with PostgreSQL
docker run --name postgres --rm -p 5433:5432 -e POSTGRES_PASSWORD=password -d postgres:13
# Enter postgres container
docker exec -it postgres bash
# Create database inside postgres container
su postgres # default ident authentication
psql # enter postgres
\conninfo # show connection info
\l # list databases
CREATE DATABASE test; # create database
\l # list databases
\q # quit psql
# Run container with pgAdmin4
docker run --rm --name pgadmin -p 80:80 -e [email protected] -e PGADMIN_DEFAULT_PASSWORD=password -d dpage/pgadmin4
# Show running containers
docker ps
# PostgreSQL address and password for pgAdmin4:
# Host: host.docker.internal
# Port: 5433
# Username: postgres
# Password: password