Docker en Docker Compose installeren op Debian 11

Docker is een gratis en open-source platform om toepassingen te ontwikkelen, te verschepen, en te draaien in de gecontaineriseerde omgeving. Het stelt je in staat je applicatie te scheiden van je infrastructuur. Dit maakt het gemakkelijker, eenvoudiger, en veiliger om containers te bouwen, uit te rollen en te beheren. Docker is ontworpen om een lokale ontwikkelomgeving op te zetten.

Als je meer dan één container voor je toepassing wilt maken, kun je Docker compose gebruiken. Docker-compose is een hulpmiddel dat gebruikt wordt om multi-container toepassingen te definiëren en te delen. Met Docker compose kun je het YAML bestand gebruiken om alle diensten te definiëren en ze in een keer uit te voeren met het eenvoudige commando.

In deze zelfstudie laten we je zien hoe je Docker en Docker compose installeert op een Debian 11 systeem.

Vereisten

  • Een server waarop Debian 11 draait.
  • Een root wachtwoord is op de server ingesteld.

Aan de slag

Eerst is het aan te raden je systeem pakket cache bij te werken naar de nieuwste versie. Je kunt ze bijwerken met het volgende commando:

apt-get update -y

Als je klaar bent, installeer je andere vereiste afhankelijkheden met het volgende commando:

apt-get install apt-transport-https software-properties-common ca-certificates curl gnupg lsb-release -y

Installeer Docker

Standaard is de nieuwste versie van Docker niet opgenomen in de officiële repository van Debian 11. Je zult dus de Docker CE repository aan de APT moeten toevoegen. Je kunt het toevoegen met het volgende commando:

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

Als de Docker repository is toegevoegd, update je de repository en installeer je Docker CE met het volgende commando:

apt-get update -y
apt-get install docker-ce docker-ce-cli -y

Controleer na de installatie de Docker CE versie met het volgende commando:

docker version

Je zou de volgende uitvoer moeten krijgen:

Client: Docker Engine - Community
 Version:           20.10.8
 API version:       1.41
 Go version:        go1.16.6
 Git commit:        3967b7d
 Built:             Fri Jul 30 19:54:22 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.8
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.6
  Git commit:       75249d8
  Built:            Fri Jul 30 19:52:31 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.9
  GitCommit:        e25210fe30a0a703442421b0f60afac609f950a3
 runc:
  Version:          1.0.1
  GitCommit:        v1.0.1-0-g4144b63
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Docker diensten beheren

Je kunt de Docker dienst eenvoudig beheren met het hulpprogramma systemd.

Om een Docker service te starten, voer je het volgende commando uit:

systemctl start docker

Om een Docker dienst opnieuw te starten, voer je het volgende commando uit:

systemctl restart docker

Om een Docker dienst te stoppen, voer je het volgende commando uit:

systemctl stop docker

Om de Docker service in te schakelen om te starten bij het herstarten van het systeem, voer je het volgende commando uit:

systemctl enable docker

Om de Docker status te controleren, voer je het volgende commando uit:

systemctl status docker

Je zou de status van Docker moeten zien in de volgende uitvoer:

? docker.service - Docker Application Container Engine
     Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2021-09-10 07:19:35 UTC; 27s ago
TriggeredBy: ? docker.socket
       Docs: https://docs.docker.com
   Main PID: 29018 (dockerd)
      Tasks: 7
     Memory: 32.6M
        CPU: 407ms
     CGroup: /system.slice/docker.service
             ??29018 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

Sep 10 07:19:34 debian11 dockerd[29018]: time="2021-09-10T07:19:34.809035575Z" level=info msg="scheme \"unix\" not registered, fallback to def>
Sep 10 07:19:34 debian11 dockerd[29018]: time="2021-09-10T07:19:34.809219999Z" level=info msg="ccResolverWrapper: sending update to cc: {[{uni>
Sep 10 07:19:34 debian11 dockerd[29018]: time="2021-09-10T07:19:34.809410545Z" level=info msg="ClientConn switching balancer to \"pick_first\">
Sep 10 07:19:34 debian11 dockerd[29018]: time="2021-09-10T07:19:34.897972507Z" level=info msg="Loading containers: start."
Sep 10 07:19:35 debian11 dockerd[29018]: time="2021-09-10T07:19:35.186940748Z" level=info msg="Default bridge (docker0) is assigned with an IP>
Sep 10 07:19:35 debian11 dockerd[29018]: time="2021-09-10T07:19:35.298681937Z" level=info msg="Loading containers: done."
Sep 10 07:19:35 debian11 dockerd[29018]: time="2021-09-10T07:19:35.356364773Z" level=info msg="Docker daemon" commit=75249d8 graphdriver(s)=ov>
Sep 10 07:19:35 debian11 dockerd[29018]: time="2021-09-10T07:19:35.357524464Z" level=info msg="Daemon has completed initialization"
Sep 10 07:19:35 debian11 systemd[1]: Started Docker Application Container Engine.
Sep 10 07:19:35 debian11 dockerd[29018]: time="2021-09-10T07:19:35.401626151Z" level=info msg="API listen on /run/docker.sock"

Een container uitvoeren met Docker

Je kunt het docker run commando gebruiken om een willekeurig image te downloaden en het binnen de container uit te voeren.

Bijvoorbeeld, voer het volgende commando uit om Debian image te downloaden en een container uit te voeren:

docker run --rm -it --name test debian:latest /bin/sh

Je zou de volgende uitvoer moeten krijgen:

Unable to find image 'debian:latest' locally
latest: Pulling from library/debian
955615a668ce: Pull complete 
Digest: sha256:08db48d59c0a91afb802ebafc921be3154e200c452e4d0b19634b426b03e0e25
Status: Downloaded newer image for debian:latest
#

Voer het volgende commando uit om uit de Debian container te stappen

#exit

Installeer Docker Compose

Docker compose is standaard niet beschikbaar in de Debian 11 standaard repository. Je zult dus de Docker compose binary moeten downloaden van Github.

Voer het volgende commando uit om de Docker compose binary te downloaden:

curl -s https://api.github.com/repos/docker/compose/releases/latest | grep browser_download_url | grep docker-compose-Linux-x86_64 | cut -d '"' -f 4 | wget -qi -

Zodra de download voltooid is, stel je de uitvoerbare toestemming in op het gedownloade bestand en verplaats je het naar het systeempad met het volgende commando:

chmod +x docker-compose-Linux-x86_64
mv docker-compose-Linux-x86_64 /usr/bin/docker-compose

Verifieer vervolgens de Docker compose versie met het volgende commando:

docker-compose version

Je zou de volgende uitvoer moeten zien:

docker-compose version 1.29.2, build 5becea4c
docker-py version: 5.0.0
CPython version: 3.7.10
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019

Docker Compose Commando’s

Om een Docker compose bestand uit te voeren, voer je het volgende commando uit:

docker-compose up -d

Om alle draaiende containers te stoppen, voer je het volgende commando uit:

docker-compose down

Om de draaiende container te pauzeren en te ontpauzeren, voer je het volgende commando uit:

docker-compose pause
docker-compose unpause

Om alle draaiende containers op te sommen, voer je het volgende commando uit:

docker-compose ps

Om de logs van draaiende diensten te controleren, voer je het volgende commando uit:

docker-compose logs

Conclusie

Gefeliciteerd! je hebt Docker en Docker Compose met succes geïnstalleerd op Debian 11. Je kunt nu je toepassing bouwen, verzenden en draaien met Docker en Docker Compose.