Install and Use Docker on Debian 10 Buster

|
Last Updated:
|
|

In this guide, we are going to learn how to install and use Docker on Debian 10 Buster. Docker is a platform that utilizes the OS-level virtualization to provide a way of packaging applications into standardized, isolated and lightweight units called containers complete with all the dependencies and libraries required for their functionality.

Install and Use Docker on Debian 10 Buster

In this tutorial, we are going to learn how to install the Docker Engine – Community on Debian 10.

Update Your System

Update and upgrade your system packages before you can proceed.

sudo apt update
sudo apt upgrade

Install Docker CE Repository

Docker CE is not available on the default Debian 10 Buster repos. Hence, you need to install them so that can be able to install Docker CE.

Run the command below to install the packages required for pulling Docker CE packages over HTTPS.

sudo apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common

Install Docker APT repository signing key.

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

Install Docker CE APT repository.

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

Run system package update.

sudo apt update

Install Docker CE on Debian 10 Buster

Once you have created the repositories, you can install docker and its required components.

sudo apt install docker-ce docker-ce-cli containerd.io

Running Docker Service on Debian 10 Buster

After installation, Docker is started and enabled to run on system boot.

systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2019-08-14 14:11:07 EDT; 22min ago
     Docs: https://docs.docker.com
 Main PID: 16977 (dockerd)
    Tasks: 10
   Memory: 89.9M
   CGroup: /system.slice/docker.service
           └─16977 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
systemctl is-enabled docker
enabled

Running Docker as non-root User

By default, docker requires root privileges to run. Hence, if you are running it as an ordinary user with no sudo rights, add that user to docker group.

sudo usermod -aG docker USER

Where USER is your non-privileged user. For example, to add a non-root user called amos to docker group,

sudo usermod -aG docker amos

Next, log out from your system for your new group membership to take effect and login again.

You should now be able to run docker with no 'permission denied while trying to connect to the Docker daemon socket...' errors.

Test Docker installation

Verify that you can run docker without sudo privileges by running a simple Docker image called hello-world.

docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete 
Digest: sha256:6540fc08ee6e6b7b63468dc3317e3303aae178cb8a45ed3123180328bcc1d20f
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
...

Using Docker on Debian 10 Buster

Docker has a command line interface tool called docker. The command line syntax for docker command is;

docker [OPTIONS] COMMAND

If you run docker with no options nor commands, it displays all the options and command usage.

docker
...
Management Commands:
  builder     Manage builds
  config      Manage Docker configs
  container   Manage containers
  context     Manage contexts
  engine      Manage the docker engine
  image       Manage images
  network     Manage networks
  node        Manage Swarm nodes
  plugin      Manage plugins
  secret      Manage Docker secrets
  service     Manage services
  stack       Manage Docker stacks
  swarm       Manage Swarm
  system      Manage Docker
  trust       Manage trust on Docker images
  volume      Manage volumes
...

To find more information on a command and its usage, simply run;

docker COMMAND --help

For example;

docker build --help

Running Docker Images

While testing our Docker installation above, we ran an image called hello-world. When an image is ran, a container is launched. If the docker image being ran is not available locally, they are pulled from the Docker Hub registry. From Docker hub, you can search and pull and use a Docker container that has been created by the community. Docker Hub is the best place to start Dockering with before you can start to build your own images.

As an example of running a docker image, we are going to learn how to pull, install and run Debian Linux image on our docker.

Search for Docker Image on Docker Hub

Docker Hub has 100,000+ container images from software vendors, open-source projects, and the community. Let us for example search for Debian container image.

docker search debian
NAME                                                 DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
ubuntu                                               Ubuntu is a Debian-based Linux operating sys…   9821                [OK]                
debian                                               Debian is a Linux distribution that's compos…   3187                [OK]                
arm32v7/debian                                       Debian is a Linux distribution that's compos…   59                                      
itscaro/debian-ssh                                   debian:jessie                                   25                                      [OK]
samueldebruyn/debian-git                             a minimal docker container with debian and g…   21                                      [OK]
arm64v8/debian                                       Debian is a Linux distribution that's compos…   20                                      
multiarch/debian-debootstrap                         multiarch ports of debian-debootstrap           9                                       
i386/debian                                          Debian is a Linux distribution that's compos…   9                                       
eboraas/debian
...

To download the Debian container image from the registry, simply run;

docker pull debian
Using default tag: latest
latest: Pulling from library/debian
4ae16bd47783: Pull complete 
Digest: sha256:2f04d3d33b6027bb74ecc81397abe780649ec89f1a2af18d7022737d0482cefe
Status: Downloaded newer image for debian:latest
docker.io/library/debian:latest

List Available Docker Images

To list available images, use docker image or docker images ls command.

docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
debian              latest              85c4fd36a543        19 hours ago        114MB
hello-world         latest              fce289e99eb9        7 months ago        1.84kB

As you can see, we have two images that we have already pulled from the docker registry.

Running a Docker Container Image

Once you have the Docker container image, you can run it using the docker run command. The syntax for docker run command is;

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

To simply run the Debian container we pulled from the registry, simply execute;

docker run -it debian

The -i and -t options used provides an interactive shell and allocate a pseudo-tty when you run the Debian container image.

root@820d3232134b:/#

You are now inside your Debian container image. You can now run any other task as you would on a virtual machine. For example;

Verify the version of your Debian server;

root@820d3232134b:/# cat /etc/os-release 
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
root@820d3232134b:/# 

Create Users on your Debian 10 container;

root@f10c8c02e501:/# useradd -m amos
root@f10c8c02e501:/# passwd amos
New password: 
Retype new password: 
passwd: password updated successfully
root@f10c8c02e501:/# usermod -aG sudo amos

To exit your container, just press ctrl+d or exit.

To list all running Docker containers, before you exit a container, open another terminal and execute;

docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
f5afa1afb260        debian              "bash"              11 seconds ago      Up 10 seconds                           objective_swirles

The command docker ps is also similar to, docker containers ls.

If you have exited the container, docker ps will not show anything. Therefore, to list all containers including the ones that are not running, simply execute;

docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                         PORTS               NAMES
f5afa1afb260        debian              "bash"              6 minutes ago       Exited (0) 5 seconds ago                           objective_swirles
f10c8c02e501        debian              "bash"              13 minutes ago      Exited (0) 10 minutes ago                          cocky_zhukovsky
820d3232134b        debian              "bash"              21 minutes ago      Exited (0) 13 minutes ago                          charming_heyrovsky
1a960a624a8d        hello-world         "/hello"            About an hour ago   Exited (0) About an hour ago                       goofy_zhukovsky

To start and exited container in an interactive mode, get the container ID or NAME from the docker ps -a command and run;

docker start -i containerID/NAME

To start the container in the background, run the command;

docker start containerID/NAME

To stop the container;

docker stop containerID/NAME

To delete container;

docker rm containerID/NAME

Well, that is just it on our basic guide on how to install and use Docker on Debian 10 Buster.

Related Tutorials;

Install Debian 10 Buster on VirtualBox

Install Fedora 30 Workstation on VirtualBox

How to Install IBM QRadar CE v7.3.1 on VirtualBox

AutoStart VirtualBox VMs on System Boot on Linux

SUPPORT US VIA A VIRTUAL CUP OF COFFEE

We're passionate about sharing our knowledge and experiences with you through our blog. If you appreciate our efforts, consider buying us a virtual coffee. Your support keeps us motivated and enables us to continually improve, ensuring that we can provide you with the best content possible. Thank you for being a coffee-fueled champion of our work!

Photo of author
koromicha
I am the Co-founder of Kifarunix.com, Linux and the whole FOSS enthusiast, Linux System Admin and a Blue Teamer who loves to share technological tips and hacks with others as a way of sharing knowledge as: "In vain have you acquired knowledge if you have not imparted it to others".

Leave a Comment