Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
| Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
|
admin_grundlagen:docker:installation [2026/01/25 14:03] ingo_wichmann [Debian (ab 12)] |
admin_grundlagen:docker:installation [2026/06/01 08:08] (aktuell) ingo_wichmann [lokalen Proxy / Cache verwenden] |
||
|---|---|---|---|
| Zeile 3: | Zeile 3: | ||
| ==== Debian (ab 12) ==== | ==== Debian (ab 12) ==== | ||
| Docker Repository hinzufügen: | Docker Repository hinzufügen: | ||
| - | apt install extrepo | + | apt install -y extrepo |
| extrepo search docker | extrepo search docker | ||
| + | -> ''Found docker-ce:'' | ||
| extrepo enable docker-ce | extrepo enable docker-ce | ||
| + | -> legt an: ''/etc/apt/sources.list.d/extrepo_docker-ce.sources'' | ||
| apt update | apt update | ||
| Pakete installieren: | Pakete installieren: | ||
| - | apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin | + | apt install docker-ce containerd.io docker-ce-cli docker-compose-plugin docker-buildx-plugin |
| ++++ Alternativ: Docker Packet von Debian | | ++++ Alternativ: Docker Packet von Debian | | ||
| Zeile 18: | Zeile 20: | ||
| dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo | dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo | ||
| Pakete installieren: | Pakete installieren: | ||
| - | dnf -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin | + | dnf -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin |
| + | ++++ Podman | | ||
| + | dnf install podman | ||
| + | ++++ | ||
| ===== Docker Service aktivieren ===== | ===== Docker Service aktivieren ===== | ||
| systemctl --now enable docker | systemctl --now enable docker | ||
| - | Test: läuft der Docker Service? | + | Docker Installation testen: |
| + | docker version | ||
| + | docker system info | ||
| + | |||
| + | läuft der Docker Service? | ||
| systemctl status docker.service | systemctl status docker.service | ||
| docker ps | docker ps | ||
| -> ''CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES'' | -> ''CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES'' | ||
| - | ===== Nutzer zur Gruppe docker hinzufügen ===== | + | ++++ podman | |
| - | Erspart das ''sudo'' vor jedem ''docker''. Gibt dem Benutzer auf indirekt root-Rechte. | + | 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 | gpasswd -a nutzer43 docker | ||
| - | ====== Docker Installation testen ====== | + | ====== lokalen Proxy / Cache verwenden ====== |
| - | docker version | + | ++++ podman | |
| - | docker system info | + | <file toml /etc/containers/registries.conf.d/10-local-docker-io-proxy.conf> |
| + | [[registry]] | ||
| + | prefix = "docker.io" | ||
| + | location = "docker-registry.guest.linuxhotel.de" | ||
| + | insecure = true | ||
| + | </file> | ||
| + | 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 | ||
| + | ++++ | ||
| - | ====== Internen Cache verwenden ====== | ||
| <file json /etc/docker/daemon.json> | <file json /etc/docker/daemon.json> | ||
| { | { | ||
| Zeile 43: | Zeile 68: | ||
| } | } | ||
| </file> | </file> | ||
| + | |||
| + | Cloud VM: | ||
| + | |||
| + | <file json /etc/docker/daemon.json> | ||
| + | { | ||
| + | "registry-mirrors": ["https://registry.lab.linuxhotel.de/nb72bnerqxlnfahdeqsfzhwjjyiqmsoz"] | ||
| + | } | ||
| + | </file> | ||
| + | |||
| + | 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 | ||
| + | |||
| + | |||