====== Docker Installation ======
===== Pakete =====
==== Debian (ab 12) ====
Docker Repository hinzufügen:
apt install -y extrepo
extrepo search docker
-> ''Found docker-ce:''
extrepo enable docker-ce
-> legt an: ''/etc/apt/sources.list.d/extrepo_docker-ce.sources''
apt update
Pakete installieren:
apt install docker-ce containerd.io docker-ce-cli docker-compose-plugin docker-buildx-plugin
++++ Alternativ: Docker Packet von Debian |
apt install docker.io docker-cli docker-compose
++++
==== Rocky Linux (9) ====
Docker Repository hinzufügen:
dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Pakete installieren:
dnf -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin
++++ Podman |
dnf install podman
++++
===== Docker Service aktivieren =====
systemctl --now enable docker
Docker Installation testen:
docker version
docker system info
läuft der Docker Service?
systemctl status docker.service
docker ps
-> ''CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES''
++++ podman |
Podman benötigt keinen daemon. Aber es gibt einen Socket:
systemctl status podman.socket
++++
====== Nutzer zur Gruppe docker hinzufügen ======
Erspart das ''sudo'' vor jedem ''docker''. Gibt dem Benutzer indirekt root-Rechte.
gpasswd -a nutzer43 docker
====== lokalen Proxy / Cache verwenden ======
++++ podman |
[[registry]]
prefix = "docker.io"
location = "docker-registry.guest.linuxhotel.de"
insecure = true
Testen, ob Images wirklich vom lokale Proxy geladen werden:
podman info --format json | jq '.registries."docker.io"'
(( alternativ:
podman info --format '{{(index .Registries "docker.io").Location}}'
))
podman image rm ubuntu
podman pull --log-level=debug ubuntu
++++
{
"registry-mirrors": ["http://docker-registry.guest.linuxhotel.de"],
"insecure-registries": ["docker-registry.guest.linuxhotel.de"]
}
Cloud VM:
{
"registry-mirrors": ["https://registry.lab.linuxhotel.de/nb72bnerqxlnfahdeqsfzhwjjyiqmsoz"]
}
systemctl restart docker.service
===== Prüfen, ob tatsächlich der Proxy verwendet wird: =====
docker image rm ubuntu
docker image pull ubuntu
journalctl -eu docker
====== Logs zu Systemd-Journald umleiten ======
Wo werden Logs gespeichert?
docker info --format '{{.LoggingDriver}}'
-> ''json-file'' (( "By default, no log-rotation is performed. As a result, log-files stored by the default json-file logging driver can cause a significant amount of disk space to be used for containers that generate much output, which can lead to disk space exhaustion.
Docker keeps the json-file logging driver (without log-rotation) as a default to remain backwards compatible with older versions of Docker, and for situations where Docker is used as runtime for Kubernetes." https://docs.docker.com/engine/logging/configure/ ))
++++ podman |
podman info --format '{{.Host.LogDriver}}'
-> ''journald'' ist default
++++
Container starten, der viele Logmeldungen produziert:
docker run -d --name log-filler alpine sh -c "while true; do seq -w 000000 999999; done"
Logs (für ein paar Sekunden) ansehen
docker container logs -f log-filler
Wachstum der Logs (für ein paar Sekunden) beobachten:
watch -d du -h /var/lib/docker/containers/*/*-json.log
log-filler container wegwerfen:
docker container rm -f log-filler