.. _howtodocker:
*********************************
Super short Docker reference
*********************************
In this age of instant internet wisdom, you can find a guide for just about
anything. Consider this your **ultra-condensed Docker cheat sheet** — the most
useful commands, tips, and gotchas that I’ve collected while wrangling
containers. Think of it as the espresso shot before the full Docker latte.
.. _docker-installation:
Installation
=============
* Ubuntu users: ``Docker`` is part of the latest Ubuntu versions
* MacOs users: you can use the precompiled package directly from the `Docker webpage `__.
Documentation
==================
For more details, the official source is always your friend:
* `Docker reference manual `_
Configuration
=============
At its core, a Docker container needs just two files to define its behavior:
* :file:`docker-compose.yml` — orchestrates services, networks, and volumes.
* :file:`Dockerfile` — describes how to build the container environment.
Useful tips
=============
Quick commands and tricks for keeping your Docker life sane.
Useful commands
---------------
* **List all volumes**:
.. code:: bash
docker volume ls
*Pro tip*: Volumes are where your data lives. Keep an eye on them.
How to change the default data directory
------------------------------------------
By default, Docker stores containers, images, and volumes in
:file:`/var/lib/docker`. If your root filesystem is limited, this may fill up
fast. Here’s how to move it to a new location (Ubuntu/Debian example):
(Extracted from `How to Change Docker’s Default Data Directory `_)
.. important:
You will need sudo privileges for these steps.
1. Stop Docker:
.. code:: bash
sudo systemctl stop docker.service
sudo systemctl stop docker.socket
2. Create a new location and move the data:
.. code:: bash
sudo mkdir /data/docker
sudo mv /var/lib/docker /data/docker
3. Update Docker configuration
Edit the daemon config:
.. code:: bash
sudo vi /etc/docker/daemon.json
Add the following:
.. code:: text
{
"data-root": "/data/docker"
}
4. Restart Docker:
.. code:: bash
sudo systemctl start docker.socket
sudo systemctl start docker.service
5. Verify that Docker is running:
.. code:: bash
sudo systemctl status docker
should output something like:
.. code:: text
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: enabled)
Active: active (running) since Sat 2025-10-18 11:05:22 EEST; 3h 24min ago
Invocation: f2052aa83cfe491ebed5264d230aa966
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 2353686 (dockerd)
Tasks: 16
Memory: 37.9M (peak: 41M)
CPU: 38.638s
CGroup: /system.slice/docker.service
└─2353686 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Oct 18 14:24:50 deer dockerd[2353686]: time="2025-10-18T14:24:50.662993087+03:00" level=info msg="No non-localhost DNS nameservers >
Oct 18 14:24:50 deer dockerd[2353686]: time="2025-10-18T14:24:50.740593836+03:00" level=info msg="ignoring event" container=dae50ac>
6. Check that Docker is using the new directory:
.. code:: bash
$ sudo docker info | grep Root
Docker Root Dir: /data/docker
Cleaning up space
----------------------
Docker loves to hoard. Let’s declutter.
(Extracted from `How to clear Docker cache and free up space on your system `_)
* **Check disk usage**:
.. code:: bash
docker system df
* **Remove stopped containers**:
.. code:: bash
docker container prune # Removes all stopped containers
* **Remove all containers**:
.. code:: bash
docker stop $(docker ps -q) # Stop all containers
docker container prune # Remove stopped containers
* **Remove images**:
.. code:: bash
docker image prune -f # Remove unused images
docker image prune -a -f # Remove all images
* **Remove volumes**:
.. code:: bash
docker volume prune -f # Remove unused volumes
docker volume rm -a # Remove all volumes
* **Remove build cache**:
.. code:: bash
docker builder prune # Old style
docker buildx prune # New style
* **Remove everything (use with caution!)**:
.. code:: bash
docker system prune -f
.. tip::
Think of this like tidying your desk: removing containers and images you
no longer need keeps Docker nimble, and saves your storage from quietly
mutating into a monster.