18 KiB
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
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:
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
```wg-easy
-------
> [!INFO] You can try it after the successful installation of docker
docker run -d
--name=wg-easy
-e WG*HOST=*89.43.107.97_
-e PASSWORD= _DeinPasswort_
-v ~/.wg-easy:/etc/wireguard
-p 51820:51820/udp
-p 51821:51821/tcp
--cap-add=NET_ADMIN
--cap-add=SYS_MODULE
--sysctl="net.ipv4.conf.all.src_valid_mark=1"
--sysctl="net.ipv4.ip_forward=1"
--restart unless-stopped
weejewel/wg-easy
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.
Installation
============
Nach der Erstellung des USB-Sticks sollten Sie folgende Schritte befolgen:
1. Im BIOS den Secure Boot deaktivieren und die Virtualisierung aktivieren (falls noch nicht aktiviert).
2. Booten Sie von dem USB-Stick mit der Live-ISO.
3. Wählen Sie die Systemsprache, Tastatur-Layout und die Zeit-Zone aus.
4. Bei der Auswahl des Speichers, auf dem das System installiert werden soll, wählen Sie die Festplatte aus und kreuzen Sie den untenstehenden Punkt an:

Nach diesen Schritten werden Sie auf die nächste Seite weitergeleitet. Hier können Sie auswählen, ob Sie die Festplatte verschlüsseln wollen und welches Dateisystem Sie verwenden möchten. Da ich [*Timeshift*](https://github.com/linuxmint/timeshift) nutzen will, empfehle ich Ihnen, das ***btrfs*** Dateisystem zu verwenden, da die Wiederherstellung dabei deutlich schneller ist.
> ***Bemerkung:***\
> Wenn Sie das Laufwerk verschlüsseln wollen, dann sollten Sie dabei folgendes beachten:
>
> - Beim Passworteingabe haben Sie immer noch die amerikanische Tastatur-Layout
> - Jedes Mal bei einem Neustart müssen Sie das Passwort eingeben
![[Pasted image 20230628100419.png]]
Klicken Sie wie auf dem Bild den markierten Text an, um die automatische Partitionierung durchzuführen. Damit ***Timeshift*** das Dateisystem lesen kann, sollten zwei Ordner umbenannt werden:
- Der Root-Ordner wird zu `@` umbenannt
- Der Home-Ordner wird zu `@home` umbenannt
Um den Ordner umzubenennen, gehen Sie wie folgt vor:
1. Klicken Sie auf den entsprechenden Ordner
2. Geben Sie unten rechts den korrekten Namen ein
3. Klicken Sie auf den Knopf `Einstellungen Übernehmen`
Nachdem Sie alles gemacht haben sollte es ungefähr so aussehen:\

Nach der Installation
=====================
Dunkler Modus
-------------
gsettings set org.gnome.desktop.interface gtk-theme 'Adwaita-dark' # Legacy apps gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' # new apps
Geräte-Namen ändern
-------------------
Um den Geräte-Namen zu ändern öffnen Sie den Terminal und fügen Sie folgendes ein:
hostnamectl set-hostname
Ändern Sie den `<gereate-name>` durch den neuen Namen Ihres Gerätes. Zum Beispiel:
hostnamectl set-hostname inf-nb-tux01
dnf einstellen
--------------
Um das System ein wenig zu beschleunigen bearbeiten Sie den *dnf.conf*.\
Folgendes wurde geändert:
- Schnellere Installation (fastest_mirror, max_parallel_downloads)
- Immer Ja (defaultyes)
Die Option *defaultyes* erlaubt es mit der ENTER-Taste die Eingabe mit Ja bestätigen. Zum Beispiel: anstatt folgendes eintippen `sudo apt-get update -y` gibt ihr folgendes ein:\
`sudo apt-get update` und bestätigt es mit der ENTER-Taste
Ändern Sie den File wie folgend:
- Öffnen Sie den Terminal und geben Sie dies hinein: `sudo nano /etc/dnf/dnf.conf`
- Kopieren Sie den Text und ersetzen Sie ihn durch den folgenden Text:
[main] gpgcheck=1 installonly_limit=3 clean_requirements_on_remove=True best=False skip_if_unavailable=True fastestmirror=1 max_parallel_downloads=10 deltarpm=true defaultyes=True
> ****Info****\
> Das Plugin `fastestmirror=1` kann manchmal kontraproduktiv sein. Verwenden Sie es nach eigenem Ermessen. Setzen Sie es auf `fastestmirror=0`, wenn Sie mit schlechten Download-Geschwindigkeiten konfrontiert sind. Viele Benutzer haben von besseren Download-Geschwindigkeiten berichtet, wenn das Plugin aktiviert ist. Daher ist es standardmäßig aktiviert.
Nvidia Treiber
--------------
Mit der Installation von den Nvidia-Treiber haben Sie die Möglichkeit auf die:
- Grafikbeschleunigung
- CUDA-Unterstützung
- Mehrere Monitorunterstützung
Sie können selber auswählen welche Treiber Sie wollen:
- Nouveau (Open-Source)
- Cuda (proprietär)
- RPM Fusion (proprietär)
Der Unterschied zwischen den genannten Treiberoptionen liegt in ihrer Quelle, Lizenzierung und den mitgelieferten Funktionen. Nouveau ist ein quellenoffener Treiber, der von der Linux-Community entwickelt wird und grundlegende Grafikkartenunterstützung bietet. Der CUDA-Treiber ist ein proprietärer Treiber von Nvidia, der speziell für CUDA-Berechnungen entwickelt wurde und die parallele Rechenleistung der Nvidia-GPUs voll ausschöpft. RPM Fusion bietet proprietäre Nvidia-Treiber als Teil seines Software-Repositories für RPM-basierte Linux-Distributionen an, um Benutzern den Zugriff auf die neuesten Treiberversionen zu ermöglichen.
### Cuda
Fügen Sie die Repository hinzu:
sudo dnf config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/fedora37/x86_64/cuda-fedora37.repo
Installieren Sie die Abhängigkeiten:
sudo dnf install -y kernel-headers kernel-devel tar bzip2 make automake gcc gcc-c++ pciutils elfutils-libelf-devel libglvnd-opengl libglvnd-glx libglvnd-devel acpid pkgconfig dkms
Installieren Sie die Treiber:
sudo dnf module install -y nvidia-driver:latest-dkms
### RPM Fusion
RPM Fusion ermöglicht den Zugriff auf nicht-freie Softwarepakete, die in den offiziellen Fedora-Repositories aus rechtlichen oder lizenztechnischen Gründen nicht verfügbar sind. Dazu gehören proprietäre Treiber, Codecs für Multimedia-Wiedergabe, bestimmte Anwendungen und Erweiterungen. Um die RPM zu installieren und zu aktivieren:
sudo dnf install https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm
Appstream Metadaten
-------------------
[AppStream](https://www.freedesktop.org/wiki/Distributions/AppStream/) verwendet ein XML-basiertes Datenformat, um Metadaten für Anwendungen zu definieren. Diese Metadaten umfassen Informationen wie Anwendungsnamen, Beschreibungen, Kategorien, Lizenzen, Entwicklerdetails, Abhängigkeiten, unterstützte Sprachen und mehr. Die Metadaten dienen dazu, Benutzern umfassende Informationen über verfügbare Anwendungen bereitzustellen.
Um den App-Stream-Metadaten auf den neuesten Stand zu bringen, geben Sie folgendes in den Terminal ein:
sudo dnf groupupdate core
Update
------
Um dein System zu *aktualisieren*:
- `sudo dnf update -y`
Um dein System zu *upgraden*:
- `sudo dnf upgrade -y`
Um Änderungen anzuwenden, neue Module zu laden und alte Module zu entladen:
- `sudo reboot`
***Oneliner:***
sudo dnf update -y && sudo dnf upgrade -y && sudo reboot
Firmware ([fwupd](https://wiki.archlinux.org/title/Fwupd))
----------------------------------------------------------
Wenn Ihr System Firmware-Update durch lvfs unterstützt, updaten Sie ihr Gerät mithilfe wie folgt:
- Den Firmware-Update Dienst herunterladen:\
`sudo dnf install fwupd`
- Den fwupd.service starten und beim Start ausführen:\
`sudo systemctl start fwupd`\
`sudo systemctl enable fwupd`
- Um alle Geräte anzuzeigen, die von fwupd erkennt worden sind:\
`sudo fwupdmgr get-devices`
- Um die neusten Metadaten herunterzuladen:\
`sudo fwupdmgr refresh --force`
- Zur Auflistung der verfügbaren Updates für alle Geräte auf dem System:\
`sudo fwupdmgr get-updates`
- Um alle Updates zu installieren:\
`sudo fwupdmgr update`
***Oneliner:***
sudo dnf install fwupd && sudo systemctl start fwupd && sudo systemctl enable fwupd && sudo fwupdmgr get-devices && sudo fwupdmgr refresh --force && sudo fwupdmgr get-updates && sudo fwupdmgr update
Media Codecs
------------
Installieren Sie folgende Module um korrekte Multimedia Playback zu erhalten:
sudo dnf install gstreamer1-plugins-{bad-*,good-*,base} gstreamer1-plugin-openh264 gstreamer1-libav --exclude=gstreamer1-plugins-bad-free-devel sudo dnf install lame* --exclude=lame-devel sudo dnf group upgrade --with-optional Multimedia sudo dnf groupupdate multimedia sound-and-video
Nur für Chrome-Benutzer
sudo dnf swap chromium chromium-freeworld --allowerasing
sudo dnf install ffmpeg-libs
### Weitere Verbesserungs-Möglichkeiten
- [Video I/O hardware acceleration, Video Decoding with VA-API](https://github.com/opencv/opencv/wiki/Video-IO-hardware-acceleration)
- [OpenH264 für Firefox](https://docs.fedoraproject.org/de/quick-docs/openh264/)
Update Flatpak
--------------
Fedora 38 kommt mit Flatpak schon vorinstalliert, aber nicht aktiviert. Fügen Sie folgende Befehle aus, um flathub repo zu aktivieren und flatpak auf den neusten Stand bringen:
flatpak remote-delete flathub flatpak remote-delete fedora flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo flatpak update
Tools
-----
- Für komprimierte Files (7z, rar):\
`sudo dnf install -y unzip p7zip p7zip-plugins unrar`
- Für GNOME:\
`sudo dnf install -y gnome-tweaks gnome-network-displays`
- Für Fedora:\
`sudo dnf install -y packageKit timeshift grub-customizer dconf-editor`
- Von Flatpak:\
`sudo flatpak install -y com.mattjakeman.ExtensionManager com.github.tchx84.Flatseal`
Thema [Optional]
----------------
### Icons und Zeiger
- [Oxygen-Cursors](https://github.com/wo2ni/Oxygen-Cursors)
- [Papirus Icon Theme]](<https://github.com/PapirusDevelopmentTeam/papirus-icon-theme>)
### Thema in Flatpaks nutzen
- `sudo flatpak override --filesystem=$HOME/.themes`
- `sudo flatpak override --env=GTK_THEME=my-theme`
- [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)