🌌 Technical Guide: Docker Engine & Docker Compose on Debian 12 (bookworm)
This document serves as a comprehensive technical reference for the installation, configuration, and utilization of Docker Engine and Docker Compose on the Debian 12 (bookworm) operating system. It is designed for developers, system administrators, and other technical professionals who require practical, command-oriented guidance for managing containerized applications.
🌟 Installation and Setup on Debian 12 (as of April 2025)
Before proceeding with the installation of Docker Engine and Docker Compose, it is crucial to remove any existing Docker packages that might conflict with the new installation. This ensures a clean and stable environment for the current versions. To install the latest stable versions of Docker Engine and Docker Compose, it is recommended to set up the official Docker apt repository. This process involves several steps to ensure the integrity and authenticity of the packages. With the GPG key added, the next step is to set up the Docker apt repository definition. This is achieved by adding a line to the system’s APT sources list. The command echo “deb [arch=$(dpkg —print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(.
To install Docker Engine, the command-line interface (CLI), the container runtime (containerd.io), the Docker Buildx plugin, and the Docker Compose plugin, execute the following command: sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin.1 This streamlined command installs all the necessary components for running and managing Docker containers and multi-container applications. It is also possible to install a specific version of Docker Engine if required. After the installation is complete, several post-installation steps are recommended. To allow the current user to run Docker commands without needing sudo each time, add the user to the docker group using the command sudo usermod -aG docker $USER.6 For these changes to take effect, it is necessary to either log out and log back in to the system or to apply the changes to the current session using the command newgrp docker.6 In some instances, particularly after previously using sudo with Docker commands, permission issues might arise with the ~/.docker/ directory. To verify that Docker Engine has been installed correctly, the hello-world image can be run using the command sudo docker run hello-world.1 This command downloads a test image from Docker Hub and runs it in a container. If the installation is successful, a confirmation message will be printed in the terminal.1 Additionally, the installed versions of the Docker client and server can be checked using the command docker version.1 This output confirms that the Docker command-line interface is correctly installed and can communicate with the Docker daemon.
🌟 Core Docker Engine Usage (CLI Examples)
Docker Engine provides a powerful set of command-line tools for managing images and containers. To download an image from a registry like Docker Hub, the docker pull command is used. The syntax is docker pull [IMAGE]:, where [IMAGE] is the name of the image and “ is a specific version. For example, to pull version 7 of the Redis image, the command is docker pull redis:7. To list the images that are currently stored locally on the system, the docker images command or its alias docker image ls is used.13 This command displays information such as the repository name, tag, image ID, creation date, and size of each image.13 Several options can be used with docker images to filter or format the output. The -a or —all option shows all images, including intermediate layers used during builds. The -q or —quiet option displays only the image IDs.
Option | Description |
---|---|
-a, —all | Show all images, including intermediate layers. |
-q, —quiet | Only display image IDs. |
—filter | Filter images based on criteria (e.g., dangling=true, before=). |
—format | Format output using Go templates. |
—no-trunc | Do not truncate the output. |
—digests | Show image digests. |
To remove one or more local images, the docker rmi command or its alias docker image rm is used, followed by the image ID or name.13 For example, docker rmi <image_id> removes the image with the specified ID. Multiple images can be removed by listing their IDs or names separated by spaces. The -f or —force option can be used to forcefully remove an image even if it is currently in use by stopped containers.17 It is important to note that using the —force option should be done with caution as it might lead to unexpected issues if the image is still referenced. Containers are instances of Docker images. To create and start a container, the docker run command is used with the syntax docker run[IMAGE].20 The “ allow for various configurations, and [IMAGE] specifies the image to be used as the blueprint for the container.21 Some commonly used options include -d to run the container in detached mode (in the background), -it to allocate an interactive terminal, and -p HOST_PORT:CONTAINER_PORT to map a port on the host to a port inside the container.20 Volumes can be mounted using the -v option, either by specifying a host path and a container path for bind mounts (-v HOST_PATH:CONTAINER_PATH) or by using a named volume (-v VOLUME_NAME:CONTAINER_PATH).20 Containers can be given a specific name using the —name option, and the —rm option can be used to automatically remove the container once it exits.20 Environment variables can be set inside the container using the -e KEY=VALUE option.20 An example combining several options is: docker run -d —name myapp -p 8080:80 -v myapp_data:/data -e MODE=production myapp_image:1.2. To view a list of running containers, the docker ps command is used.16 By default, it only shows containers that are currently running. To see all containers, including those that have stopped, the -a or —all option can be used. The -q or —quiet option displays only the container IDs. The —format option allows for customizing the output using Go templates.16
Option | Description |
---|---|
-a, —all | Show all containers (running and stopped). |
-q, —quiet | Only display container IDs. |
—filter | Filter containers based on criteria (e.g., status=exited, name=). |
—format | Format output using Go templates (e.g., to show specific fields). |
-n, —last | Show the n most recently created containers. |
-s, —size | Display the total file size of each container. |
To stop one or more running containers, the docker stop command is used, followed by the container name or ID.26 This command sends a SIGTERM signal to the container, allowing it to shut down gracefully. The -t or —time option can be used to specify a timeout period before Docker forcefully stops the container with a SIGKILL signal.28 To start one or more stopped containers, the docker start command or its alias docker container start is used, followed by the container name or ID.21 The -a or —attach option can be used to attach to the container’s standard output and error streams.21 The docker restart command restarts a container by first stopping it and then starting it again.30 The —signal option allows sending a specific signal during the stop phase, and restart policies can be defined using the —restart option with docker run.30 To remove one or more stopped containers, the docker rm command or its alias docker container rm is used, followed by the container name or ID.32 The -f or —force option can be used to forcefully remove a running container, and the -v option removes any volumes associated with the container.32
To view the logs of a container, the docker logs command or its alias docker container logs is used, followed by the container name or ID.35 The -f or —follow option streams the logs in real-time, similar to tail -f. The —tail
Docker provides networking capabilities to allow containers to communicate with each other and the outside world. By default, containers are connected to a bridge network.
🌟 Dockerfile Basics & Example
A Dockerfile is a text document that contains all the commands a user could call on the command line to assemble an image.68 It specifies the base image, instructions to install software, copy files, set environment variables, and define the command to run when a container is started. A basic Dockerfile for a Python application might look like this:
Dockerfile
🌌 Use an official Python runtime as a parent image
FROM python:3.9-slim-buster
🌌 Set the working directory in the container
WORKDIR /app
🌌 Copy the requirements file into the container at /app
COPY requirements.txt.
🌌 Install Python dependencies
RUN pip install —no-cache-dir -r requirements.txt
🌌 Copy the current directory contents into the container at /app
COPY..
🌌 Make port 80 available to the world outside this container
EXPOSE 80
🌌 Define environment variable
ENV FLASK_APP=app.py
🌌 Run app.py when the container launches
CMD [“python”, “app.py”]
🌌 Specify the user to run the application as
USER nonroot
The FROM instruction specifies the base image to start from.68 WORKDIR sets the working directory for any subsequent instructions.68 COPY transfers files and directories from the host to the container.68 RUN executes commands inside the image, often used for installing software.68 EXPOSE informs Docker about the network port the application listens on.68 CMD defines the default command to be executed when the container starts.68 USER sets the user to run subsequent commands as.68
Multi-stage builds are a powerful feature that helps reduce the final image size by separating the build environment from the runtime environment.68 This involves using multiple FROM instructions in a single Dockerfile. For example, a multi-stage build for a Node.js application could look like this:
Dockerfile
🌌 Stage 1: Build stage
FROM node:18 AS builder WORKDIR /app COPY package*.json. RUN npm install COPY.. RUN npm run build
🌌 Stage 2: Production stage
FROM node:18-slim WORKDIR /app COPY —from=builder /app/dist. EXPOSE 3000 CMD [“node”, “server.js”] USER node
In this example, the first stage (builder) compiles the application, and the second stage copies only the necessary artifacts (/app/dist) into a smaller runtime image (node:18-slim), resulting in a more efficient final image.69
The .dockerignore file specifies files and directories that should be excluded when building a Docker image.69 This helps reduce the image size, speeds up build times, and avoids accidentally including sensitive data or build artifacts. Common exclusions include version control directories like .git, dependency directories like node_modules or __pycache__, and temporary files.71
To build an image from a Dockerfile, the docker build command is used with the syntax docker build PATH | URL.13 The -t or —tag option is used to name and tag the image, and the .
typically refers to the current directory as the build context, where the Dockerfile and other necessary files are located. For example, docker build -t my_web_app:1.0.
🌟 Docker Compose Usage (CLI Examples & YAML)
Docker Compose is a tool for defining and running multi-container Docker applications using a single YAML file named docker-compose.yml.75 This file declaratively defines all the services, networks, and volumes needed for the application stack. The version key at the top of the file specifies the Docker Compose file format version, and for modern Docker releases, it should be set to ‘3.8’ or higher.75
A well-commented example docker-compose.yml for a web application (e.g., Python Flask) connecting to a database (PostgreSQL) using a user-defined network and named volumes might look like this:
YAML
version: ‘3.8’ services: web: build:./web ports:
-
“5000:5000” environment:
-
DATABASE_URL=postgresql://user:password@db:5432/mydb depends_on:
-
db volumes:
-
web_data:/app/data networks:
-
my_app_network db: image: postgres:15 environment: POSTGRES_USER: user POSTGRES_PASSWORD: password POSTGRES_DB: mydb volumes:
-
db_data:/var/lib/postgresql/data networks:
-
my_app_network volumes: web_data: db_data: networks: my_app_network: driver: bridge
In this example, the services section defines two services: web and db. The web service is built from a Dockerfile located in the ./web directory, exposes port 5000, and depends on the db service. It also mounts a named volume web_data and is part of the my_app_network. The db service uses the postgres:15 image, sets environment variables for the database, mounts a named volume db_data for persistent storage, and is also part of the my_app_network.
Section | Description |
---|---|
version | Specifies the Docker Compose file format version. |
services | Defines the containers (services) that make up the application. |
volumes | Defines named volumes for persistent data storage. |
networks | Defines user-defined networks for inter-container communication. |
build | Specifies the build context and Dockerfile for building an image. |
image | Specifies a pre-built Docker image to use for the service. |
ports | Maps ports between the host and the container. |
environment | Sets environment variables within the container. |
depends_on | Defines service dependencies and startup order. |
Docker Compose provides several core CLI commands for managing the application stack defined in the docker-compose.yml file. The docker compose up command builds, (re)creates, starts, and attaches to the containers defined in the file.78 The -d option runs the containers in detached mode, and the —build option forces the rebuilding of images. Specific services can be started by specifying their names at the end of the command. The docker compose down command stops and removes the containers, networks, and volumes that were created by up.80 The -v option removes named volumes as well, and —rmi
🌟 Best Practices (Concise List)
Adhering to best practices ensures that Docker images and containers are efficient, secure, and maintainable. Some key best practices include: using official base images from trusted sources; specifying image versions or tags instead of relying on latest; minimizing the number of image layers by combining related commands in a single RUN instruction and utilizing multi-stage builds; leveraging the .dockerignore file to exclude unnecessary files from the image; running containers as non-root users for enhanced security; preferring named volumes over bind mounts for persistent data where feasible; defining the entire application stack declaratively using Docker Compose; parameterizing configurations using environment variables for flexibility; and ensuring applications log to stdout and stderr for Docker’s log collection mechanisms.20
🌟 System Maintenance & Cleanup (Commands)
Over time, Docker can accumulate unused resources that consume disk space. Docker provides several commands to clean up these resources. The docker system prune command removes stopped containers, unused networks, dangling images (images not associated with a tagged image), and the build cache.92 It is important to note that this command might lead to data loss if volumes are not properly managed. The docker system prune -a command extends this cleanup to include all unused images, not just dangling ones.92 However, this might remove images that are still intended for use by non-running containers. For more targeted cleanup, specific commands can be used. To remove all stopped containers, execute docker rm $(docker ps -aq —filter status=exited).51 Dangling images can be removed using docker rmi $(docker images -qf dangling=true).17 Specific images, containers, or volumes can be removed by their respective IDs or names using docker rmi <image_id>, docker rm <container_id>, and docker volume rm <volume_name>.
🌟 Conclusion
This guide provides a comprehensive overview of installing, configuring, and using Docker Engine and Docker Compose on Debian 12 (bookworm). By following the outlined steps and utilizing the provided commands and examples, users can effectively manage containerized applications on their Debian systems. Adherence to the discussed best practices and regular system maintenance will contribute to a stable, efficient, and secure Docker environment.
🔧 Works cited
1. Debian | Docker Docs, accessed on April 7, 2025, https://docs.docker.com/engine/install/debian/
2. Uninstalling Docker - Stack Overflow, accessed on April 7, 2025, https://stackoverflow.com/questions/66338203/uninstalling-docker
3. How to Install Docker and Docker Compose on Debian 12 ‘Bookworm’ - xTom, accessed on April 7, 2025, https://xtom.com/blog/how-to-install-docker-and-docker-compose-on-debian-12-bookworm/
4. Docker installation on Debian 12 - Thomas-Krenn-Wiki-en, accessed on April 7, 2025, https://www.thomas-krenn.com/en/wiki/Docker_installation_on_Debian_12
5. Installing Docker on Debian 12 - Medium, accessed on April 7, 2025, https://medium.com/@kiena/installing-docker-on-debian-12-3e89836639ec
6. Linux post-installation steps for Docker Engine, accessed on April 7, 2025, https://docs.docker.com/engine/install/linux-postinstall/
7. Can’t add user to docker group - Stack Overflow, accessed on April 7, 2025, https://stackoverflow.com/questions/56305613/cant-add-user-to-docker-group
8. How to Install Docker in Debian 12 Server Using Docker Apt Repository - Web Shanks, accessed on April 7, 2025, https://webshanks.com/how-to-install-docker-in-debian-12-server-using-docker-apt-repository/
9. How to Install Docker on Debian 12 - Vultr Docs, accessed on April 7, 2025, https://docs.vultr.com/how-to-install-docker-on-debian-12
10. How to Install Docker on Debian 12: All Possible Methods - Greenwebpage.com, accessed on April 7, 2025, https://greenwebpage.com/community/how-to-install-docker-on-debian-12/
11. Docker Pull - Ducat Tutorials, accessed on April 7, 2025, https://tutorials.ducatindia.com/docker/docker-pull
12. docker image pull, accessed on April 7, 2025, https://docs.docker.com/reference/cli/docker/image/pull/
13. Docker Image Commands [with Examples & Use Cases] - KnowledgeHut, accessed on April 7, 2025, https://www.knowledgehut.com/blog/devops/docker-images-command
14. docker image - Docker Docs, accessed on April 7, 2025, https://docs.docker.com/reference/cli/docker/image/
15. List Of Docker Images Command: All You Need To Know - The Knowledge Academy, accessed on April 7, 2025, https://www.theknowledgeacademy.com/blog/docker-images-command/
16. How to customize Docker ps output - LabEx, accessed on April 7, 2025, https://labex.io/tutorials/docker-how-to-customize-docker-ps-output-418058
17. Docker commands Guide - docker rmi with examples - DevOpsSchool.com, accessed on April 7, 2025, https://www.devopsschool.com/blog/docker-rmi/
18. docker image rm, accessed on April 7, 2025, https://docs.docker.com/reference/cli/docker/image/rm/
19. How to remove a Docker image locally and on a Docker registry. - Warp Terminal, accessed on April 7, 2025, https://www.warp.dev/terminus/remove-docker-image
20. Simplifying Containerization With Docker Run Command - BuildPiper, accessed on April 7, 2025, https://www.buildpiper.io/blogs/simplifying-containerization-with-docker-run-command/
21. How to Start Docker Containers - phoenixNAP, accessed on April 7, 2025, https://phoenixnap.com/kb/docker-start-container
22. Simplifying Containerization with Docker Run Command | by BuildPiper - Medium, accessed on April 7, 2025, https://medium.com/buildpiper/simplifying-containerization-with-docker-run-command-2f74e114f42a
23. Running containers - Docker Docs, accessed on April 7, 2025, https://docs.docker.com/engine/containers/run/
24. docker run Command: Syntax, Options, Examples - phoenixNAP, accessed on April 7, 2025, https://phoenixnap.com/kb/docker-run-command-with-examples
25. Docker ps: Basic and Advanced Usage Guide - IOFLOOD.com, accessed on April 7, 2025, https://ioflood.com/blog/docker-ps-basic-and-advanced-usage-guide/
26. How to Stop Running and Unresponsive Docker Containers - Warp Terminal, accessed on April 7, 2025, https://www.warp.dev/terminus/docker-stop-all-containers
27. How to Stop Docker Containers - phoenixNAP, accessed on April 7, 2025, https://phoenixnap.com/kb/stop-docker-containers
28. How to use the docker stop
command effectively? | LabEx, accessed on April 7, 2025, https://labex.io/questions/how-to-use-the-docker-stop-command-effectively-271501
29. docker container start, accessed on April 7, 2025, https://docs.docker.com/reference/cli/docker/container/start/
30. How To Manually And Automatically Restart Docker Containers - Warp Terminal, accessed on April 7, 2025, https://www.warp.dev/terminus/docker-restart-container
31. Start containers automatically - Docker Docs, accessed on April 7, 2025, https://docs.docker.com/engine/containers/start-containers-automatically/
32. docker container rm - Docker Docs, accessed on April 7, 2025, https://docs.docker.com/reference/cli/docker/container/rm/
33. docker compose rm - Docker Docs, accessed on April 7, 2025, https://docs.docker.com/reference/cli/docker/compose/rm/
34. How to stop and remove Docker containers? - LabEx, accessed on April 7, 2025, https://labex.io/questions/how-to-stop-and-remove-docker-containers-16232
35. How to View Docker Container Logs - A Step-by-Step Guide | SigNoz, accessed on April 7, 2025, https://signoz.io/guides/docker-view-logs/
36. Docker Logs: Guide to Managing Docker Container Logs - phoenixNAP, accessed on April 7, 2025, https://phoenixnap.com/kb/docker-container-logs
37. docker container logs, accessed on April 7, 2025, https://docs.docker.com/reference/cli/docker/container/logs/
38. Docker Compose Logs: An In-Depth Guide for Developers - Last9, accessed on April 7, 2025, https://last9.io/blog/docker-compose-logs/
39. Docker Exec Command - How to Use It, Tips & Examples - Spacelift, accessed on April 7, 2025, https://spacelift.io/blog/docker-exec
40. How to use Docker exec | Cherry Servers, accessed on April 7, 2025, https://www.cherryservers.com/blog/how-to-use-docker-exec
41. docker container exec - Docker Docs, accessed on April 7, 2025, https://docs.docker.com/reference/cli/docker/container/exec/
42. How to use the Docker inspect command effectively? - LabEx, accessed on April 7, 2025, https://labex.io/questions/how-to-use-the-docker-inspect-command-effectively-271467
43. Docker Inspect Explained: A Step-by-Step Guide - Kosli, accessed on April 7, 2025, https://www.kosli.com/blog/docker-inspect-explained-the-essential-guide/
44. docker inspect - Docker Docs, accessed on April 7, 2025, https://docs.docker.com/reference/cli/docker/inspect/
45. docker volume create - Docker Docs, accessed on April 7, 2025, https://docs.docker.com/reference/cli/docker/volume/create/
46. How to list all Docker volumes - LabEx, accessed on April 7, 2025, https://labex.io/tutorials/docker-how-to-list-all-docker-volumes-416186
47. docker volume ls - Docker Docs, accessed on April 7, 2025, https://docs.docker.com/reference/cli/docker/volume/ls/
48. How to inspect the contents of a Docker volume - LabEx, accessed on April 7, 2025, https://labex.io/tutorials/docker-how-to-inspect-the-contents-of-a-docker-volume-416185
49. docker volume inspect - Docker Docs, accessed on April 7, 2025, https://docs.docker.com/reference/cli/docker/volume/inspect/
50. Volumes | Docker Docs, accessed on April 7, 2025, https://docs.docker.com/engine/storage/volumes/
51. How To Remove Docker Volumes, Images and Containers | Blog - Contabo, accessed on April 7, 2025, https://contabo.com/blog/how-to-remove-docker-volumes-images-and-containers/
52. docker volume rm - Docker Docs, accessed on April 7, 2025, https://docs.docker.com/reference/cli/docker/volume/rm/
53. How to create a network of containers that can communicate with each other interchangably? - Docker Desktop, accessed on April 7, 2025, https://forums.docker.com/t/how-to-create-a-network-of-containers-that-can-communicate-with-each-other-interchangably/134292
54. Networking | Docker Docs, accessed on April 7, 2025, https://docs.docker.com/engine/network/
55. docker network create - Docker Docs, accessed on April 7, 2025, https://docs.docker.com/reference/cli/docker/network/create/
56. How to create a custom Docker bridge network - LabEx, accessed on April 7, 2025, https://labex.io/tutorials/docker-how-to-create-a-custom-docker-bridge-network-411523
57. How to list Docker networks on a host - LabEx, accessed on April 7, 2025, https://labex.io/tutorials/docker-how-to-list-docker-networks-on-a-host-411563
58. How to fix ‘docker network ls’ command not found error - LabEx, accessed on April 7, 2025, https://labex.io/tutorials/docker-how-to-fix-docker-network-ls-command-not-found-error-417656
59. docker network ls | Docker Docs, accessed on April 7, 2025, https://docs.docker.com/reference/cli/docker/network/ls/
60. docker-network-inspect - Display detailed information on one or more networks - Ubuntu Manpage, accessed on April 7, 2025, https://manpages.ubuntu.com/manpages/xenial/man1/docker-network-inspect.1.html
61. docker network inspect - Docker Docs, accessed on April 7, 2025, https://docs.docker.com/reference/cli/docker/network/inspect/
62. Docker : How to find the network my container is in? - Stack Overflow, accessed on April 7, 2025, https://stackoverflow.com/questions/43904562/docker-how-to-find-the-network-my-container-is-in
63. docker network rm - Docker Docs, accessed on April 7, 2025, https://docs.docker.com/reference/cli/docker/network/rm/
64. docker network rm, accessed on April 7, 2025, https://docker-docs.uclv.cu/engine/reference/commandline/network_rm/
65. docker-network-rm - Remove one or more networks - Ubuntu Manpage, accessed on April 7, 2025, https://manpages.ubuntu.com/manpages/xenial/en/man1/docker-network-rm.1.html
66. docker network connect, accessed on April 7, 2025, https://docs.docker.com/reference/cli/docker/network/connect/
67. Networking using the host network - Docker Docs, accessed on April 7, 2025, https://docs.docker.com/engine/network/tutorials/host/
68. Docker - Dockerfile - Tutorialspoint, accessed on April 7, 2025, https://www.tutorialspoint.com/docker/docker_file.htm
69. Building best practices - Docker Docs, accessed on April 7, 2025, https://docs.docker.com/build/building/best-practices/
70. Deep Dive into Multistage Dockerfile with a Golang App ⚙️ - DEV Community, accessed on April 7, 2025, https://dev.to/sre_panchanan/deep-dive-into-multistage-dockerfile-with-a-golang-app-6e1
71. How to use .dockerignore and its importance | Shisho Cloud, accessed on April 7, 2025, https://shisho.dev/blog/posts/how-to-use-dockerignore/
72. DOCKER TUTORIALS. Do not ignore .dockerignore (it’s… | by Codefresh | Container Hub, accessed on April 7, 2025, https://medium.com/containers-101/docker-tutorials-2e31a513de61
73. How to Build a Docker Image from Dockerfile - Cherry Servers, accessed on April 7, 2025, https://www.cherryservers.com/blog/docker-build-command
74. docker buildx build, accessed on April 7, 2025, https://docs.docker.com/reference/cli/docker/buildx/build/
75. Docker Compose - Developer Experience Knowledge Base, accessed on April 7, 2025, https://developerexperience.io/articles/docker-compose
76. The Meaning of Version in docker-compose.yml | Baeldung on Ops, accessed on April 7, 2025, https://www.baeldung.com/ops/docker-compose-yml-version
77. How to Verify and Troubleshoot Your Docker Compose Configuration - LabEx, accessed on April 7, 2025, https://labex.io/tutorials/docker-how-to-verify-and-troubleshoot-your-docker-compose-configuration-398334
78. Docker Compose - What is It, Example & Tutorial - Spacelift, accessed on April 7, 2025, https://spacelift.io/blog/docker-compose
79. docker compose up - Docker Docs, accessed on April 7, 2025, https://docs.docker.com/reference/cli/docker/compose/up/
80. How To Shutdown Services In Docker Compose - Warp Terminal, accessed on April 7, 2025, https://www.warp.dev/terminus/docker-compose-down
81. docker compose down - Docker Docs, accessed on April 7, 2025, https://docs.docker.com/reference/cli/docker/compose/down/
82. Docker-Compose - Ps/Pause/Unpause - Learning-Ocean, accessed on April 7, 2025, https://learning-ocean.com/tutorials/docker-compose/docker-compose-pspauseunpause/
83. docker compose - Docker Docs, accessed on April 7, 2025, https://docs.docker.com/reference/cli/docker/compose/
84. Docker Compose Logs - Guide to Monitoring & Debugging - Spacelift, accessed on April 7, 2025, https://spacelift.io/blog/docker-compose-logs
85. docker compose exec - Docker Docs, accessed on April 7, 2025, https://docs.docker.com/reference/cli/docker/compose/exec/
86. docker-compose exec issue #4290 - GitHub, accessed on April 7, 2025, https://github.com/docker/compose/issues/4290
87. docker compose pull - Docker Docs, accessed on April 7, 2025, https://docs.docker.com/reference/cli/docker/compose/pull/
88. docker-compose pull, accessed on April 7, 2025, https://docker-docs.uclv.cu/compose/reference/pull/
89. docker compose config - Docker Docs, accessed on April 7, 2025, https://docs.docker.com/reference/cli/docker/compose/config/
90. Pulling Images Using the Docker CLI - Oracle Help Center, accessed on April 7, 2025, https://docs.oracle.com/en-us/iaas/Content/Registry/Tasks/registrypullingimagesusingthedockercli.htm
91. 21 Docker Security Best Practices: Daemon, Image, Containers - Spacelift, accessed on April 7, 2025, https://spacelift.io/blog/docker-security
92. Docker Prune: A Complete Guide with Hands-On Examples - DataCamp, accessed on April 7, 2025, https://www.datacamp.com/tutorial/docker-prune
93. guide/english/docker/docker-system-prune · fa7043e135e8ac2a98e0a918602d3350b3573f14 · digll-freecodecamp-public / digll-freecodecamp-hsrm - GitLab, accessed on April 7, 2025, https://gitlab.studiumdigitale.uni-frankfurt.de/digll-freecodecamp-public/digll-freecodecamp-hsrm/-/tree/fa7043e135e8ac2a98e0a918602d3350b3573f14/guide/english/docker/docker-system-prune
94. How to Use Docker Prune - Beam Cloud, accessed on April 7, 2025, https://www.beam.cloud/blog/docker-prune
95. Tidy up with docker system prune - Depot.dev, accessed on April 7, 2025, https://depot.dev/blog/docker-system-prune
96. docs.docker.com, accessed on April 7, 2025, https://docs.docker.com/engine/manage-resources/pruning/#:~:text=The%20docker%20system%20prune%20command,system%20prune%20to%20prune%20volumes.&text=y%2FN%5D%20y-,By%20default%2C%20you’re%20prompted%20to%20continue.,f%20or%20%2D%2Dforce%20flag.
97. Prune unused Docker objects - Docker Docs, accessed on April 7, 2025, https://docs.docker.com/engine/manage-resources/pruning/
98. How To Remove All Stopped Containers In Docker - Warp Terminal, accessed on April 7, 2025, https://www.warp.dev/terminus/docker-remove-stopped-containers
99. How To Remove Docker Images, Containers, and Volumes - DigitalOcean, accessed on April 7, 2025, https://www.digitalocean.com/community/tutorials/how-to-remove-docker-images-containers-and-volumes
100. docker network prune, accessed on April 7, 2025, https://docs.docker.com/reference/cli/docker/network/prune/
101. Why do I have to periodically use docker network prune
to reenable docker mapping ip connections inside a container? - Stack Overflow, accessed on April 7, 2025, https://stackoverflow.com/questions/55819578/why-do-i-have-to-periodically-use-docker-network-prune-to-reenable-docker-mapp