# Install Docker-ce How do I install Docker CE on Debian 11/10?, How can I install Docker Compose on Debian 11/10 Linux system?. In this guide, I'll discuss a step by step installation of Docker and Docker Compose on Debian 11/10. Docker is the most popular and widely used container runtime. It enables you to package and run your applications in isolated containers in a single server or cluster of Linux servers orchestrated by Kubernetes and similar tools. ## Docker Editions There are two editions of Docker available. - **Community Edition (CE)**: ideal for individual developers and small teams looking to get started with Docker and experimenting with container-based apps. - **Enterprise Edition (EE)**: Designed for enterprise development and IT teams who build, ship, and run business-critical applications in production at scale. This guide will cover installation of Docker CE on Debian 10 / Debian 11 Linux. But let's first look at common docker terminologies. ## Docker Components / Terminologies Below are commonly used terminologies in Docker ecosystem. - **Docker daemon**: This is also called Docker Engine, it is a background process which runs on the host system responsible for building and running of containers. - **Docker Client**: This is a command line tool used by the user to interact with the Docker daemon. - **Docker Image**: An image is an immutable file that's essentially a snapshot of a container. A docker image has a file system and application dependencies required for running applications. - **Docker container**: This is a running instance of a docker image with an application and its dependencies. Each container has a unique process ID and isolated from other containers. The only thing containers share is the Kernel. - **Docker registry**: This is an application responsible for managing storage and delivery of Docker container images. It can be private or public. # Install Docker CE on Debian 11 (Bullseye) / Debian 10 (Buster) Follow the steps covered in the next parts of this article to install and use Docker CE on Debian 11/10. ## Step 1: Install Dependency packages Start the installation by ensuring that all the packages used by docker as dependencies are installed. ``` sudo apt update sudo apt -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common ``` ## Step 2: Add Docker's official GPG key: Import Docker GPG key used for signing Docker packages. ``` curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker-archive-keyring.gpg ``` ## Step 3: Add the Docker repository to Debian 10 / Debian 11 Add Docker repository which contain the latest stable releases of Docker CE. ``` sudo add-apt-repository\ "deb [arch=amd64] https://download.docker.com/linux/debian\ $(lsb_release -cs)\ stable" ``` This command will add the line shown in `/etc/apt/sources.list` file. ## Step 4: Install Docker & Docker Compose on Debian 11/10 Update the `apt` package index. ``` sudo apt update ``` To install Docker CE on Debian, run the command: ``` sudo apt install docker-ce docker-ce-cli containerd.io -y ``` Start and enable docker service: ``` sudo systemctl enable --now docker ``` This installation will add `docker` group to the system without any users. Add your user account to the group to run docker commands as non-privileged user. ``` sudo usermod -aG docker $USER newgrp docker ``` Check docker and compose version. ``` $ docker version Client: Docker Engine - Community Version: 20.10.17 API version: 1.41 Go version: go1.17.11 Git commit: 100c701 Built: Mon Jun 6 23:03:17 2022 OS/Arch: linux/amd64 Context: default Experimental: true Server: Docker Engine - Community Engine: Version: 20.10.17 API version: 1.41 (minimum version 1.12) Go version: go1.17.11 Git commit: a89b842 Built: Mon Jun 6 23:01:23 2022 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.6.6 GitCommit: 10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1 runc: Version: 1.1.2 GitCommit: v1.1.2-0-ga916309 docker-init: Version: 0.19.0 GitCommit: de40ad0 ``` Log out and log back in so that your group membership is re-evaluated. ``` exit ``` ### Install Docker Compose on Debian Use the guide below to install latest Docker Compose on Debian 10 / Debian 11 - [How To Install Latest Docker Compose on Linux](https://computingforgeeks.com/how-to-install-latest-docker-compose-on-linux/) ## Step 5: Test Docker installation Run a test docker container: ``` $ docker run --rm -it --name test alpine:latest /bin/sh latest: Pulling from library/alpine 2408cc74d12b: Pull complete Digest: sha256:686d8c9dfa6f3ccfc8230bc3178d23f84eeaf7e457f36f271ab1acc53015037c Status: Downloaded newer image for alpine:latest / # cat /etc/os-release NAME="Alpine Linux" ID=alpine VERSION_ID=3.16.0 PRETTY_NAME="Alpine Linux v3.16" HOME_URL="https://alpinelinux.org/" BUG_REPORT_URL="https://gitlab.alpinelinux.org/alpine/aports/-/issues" / # exit ``` ## Step 6: Test Docker Compose installation. Create a test Docker Compose file. ``` vim docker-compose.yml ``` Add below data to the file. ``` version: '3' services: web: image: nginx:latest ports: - "8080:80" links: - php php: image: php:7-fpm ``` Start service containers. ``` $ docker-compose up -d ``` Output: ![docker compose start containers](https://computingforgeeks.com/wp-content/uploads/2019/03/docker-compose-start-containers.png?ezimgfmt=rs:696x404/rscb23/ng:webp/ngcb23) Show running Containers ``` $ docker-compose ps ``` Destroy containers ``` $ docker-compose stop $ docker-compose rm Going to remove vagrant_web_1, vagrant_php_1 Are you sure? [yN] y Removing vagrant_web_1 ... done Removing vagrant_php_1 ... done ``` You have successfully installed Docker on Debian 10 / Debian 11 Linux. Go through Official[ Docker documentation](https://docs.docker.com/) and [Docker Compose documentation](https://docs.docker.com/compose/) to learn more. ## Setup Docker UI (Optional) If you need a UI management console for Docker hosts and containers, checkout Portainer. - [How to Install Portainer Docker UI manager](https://computingforgeeks.com/install-docker-ui-manager-portainer/) ## Monitoring Docker containers Monitoring Docker containers can be achieved by using Monitoring tools such as [Netdata, Prometheus and Grafana](https://computingforgeeks.com/category/monitoring/). Below guide should also be helpful [Check Container container metrics with Ctop.](https://computingforgeeks.com/top-command-for-container-metrics/) ### Best Docker Learning Courses: - [Docker Mastery: with Kubernetes +Swarm from a Docker Captain](https://click.linksynergy.com/deeplink?id=2sb89XJC/EQ&mid=39197&murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fdocker-mastery%2F) - [Docker for the Absolute Beginner -- Hands On -- DevOps](https://click.linksynergy.com/deeplink?id=2sb89XJC/EQ&mid=39197&murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Flearn-docker%2F) - [Docker and Kubernetes: The Complete Guide](https://click.linksynergy.com/deeplink?id=2sb89XJC/EQ&mid=39197&murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fdocker-and-kubernetes-the-complete-guide%2F) - [Docker -- SWARM -- Hands-on -- DevOps](https://click.linksynergy.com/deeplink?id=2sb89XJC/EQ&mid=39197&murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Flearn-docker-advanced%2F) - [Docker Swarm Mastery: DevOps Style Cluster Orchestration](https://click.linksynergy.com/deeplink?id=2sb89XJC/EQ&mid=39197&murl=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fdocker-swarm-mastery%2F)