====== 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