Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
docker [02/10/2022 - 12:25] – gelöscht thommie4 | docker [05/03/2024 - 10:52] (aktuell) – Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== Docker ====== | ||
+ | Doku: [[https:// | ||
+ | |||
+ | ===== Basisinstallation ===== | ||
+ | |||
+ | * [[https:// | ||
+ | * Installation auf Ubuntu[[https:// | ||
+ | * Docker UI: [[http:// | ||
+ | |||
+ | Docker Daten-Ablage auf btrfs Partition verlagern | ||
+ | |||
+ | < | ||
+ | root@docker3:/ | ||
+ | |||
+ | { | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== Images ==== | ||
+ | |||
+ | Images aus Repository runterladen | ||
+ | |||
+ | '' | ||
+ | |||
+ | Alle Images im lokalen repository zeigen | ||
+ | |||
+ | < | ||
+ | root@develd: | ||
+ | REPOSITORY | ||
+ | local_discourse/ | ||
+ | grundic/ | ||
+ | discourse/ | ||
+ | discourse/ | ||
+ | local_discourse/ | ||
+ | discourse/ | ||
+ | xbrowsersync/ | ||
+ | </ | ||
+ | |||
+ | Image löschen | ||
+ | |||
+ | < | ||
+ | docker image rm [id] | ||
+ | </ | ||
+ | |||
+ | Image Repo aufräumen und ungenutzte Images löschen | ||
+ | |||
+ | < | ||
+ | docker image prune [OPTIONS] | ||
+ | </ | ||
+ | |||
+ | z.B: alle images löschen, die nicht von mindestens einem Container genutzt werden | ||
+ | |||
+ | < | ||
+ | docker image prune -a | ||
+ | </ | ||
+ | |||
+ | ==== Container Management ==== | ||
+ | |||
+ | Alle Container auf einmal stoppen | ||
+ | |||
+ | < | ||
+ | docker kill $(docker ps -q) | ||
+ | docker rm $(docker ps -a -q) | ||
+ | docker rmi $(docker images -q) | ||
+ | </ | ||
+ | |||
+ | Container aus heruntergeladenem Image erzeugen | ||
+ | |||
+ | '' | ||
+ | |||
+ | Alle laufenden und gestoppten Container zeigen: | ||
+ | |||
+ | '' | ||
+ | |||
+ | Filtern auf laufende Container | ||
+ | |||
+ | < | ||
+ | root@develd: | ||
+ | CONTAINER ID | ||
+ | 31f9a6ffcab8 | ||
+ | 7c3cd1abf744 | ||
+ | 05f7f43d0493 | ||
+ | </ | ||
+ | |||
+ | Laufende und gestoppte, aber nur die container id ausgeben | ||
+ | |||
+ | '' | ||
+ | |||
+ | Container zeigen, die nicht laufen | ||
+ | |||
+ | < | ||
+ | root@develd: | ||
+ | b39916cf84e2 | ||
+ | e6e7c809ad34 | ||
+ | </ | ||
+ | |||
+ | Container starten/ | ||
+ | |||
+ | '' | ||
+ | |||
+ | **Alle** | ||
+ | |||
+ | < | ||
+ | docker stop $ (docker ps -a -q) docker rm $(docker ps -a -q) | ||
+ | </ | ||
+ | |||
+ | Diese können mit docker rm gelöscht werden | ||
+ | |||
+ | < | ||
+ | root@develd: | ||
+ | e6e7c809ad34 | ||
+ | </ | ||
+ | |||
+ | Alle Container löschen, die nicht laufen | ||
+ | |||
+ | < | ||
+ | docker container prune | ||
+ | </ | ||
+ | |||
+ | Restart policy ändern | ||
+ | |||
+ | < | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Einen Container betreten ==== | ||
+ | |||
+ | < | ||
+ | </ | ||
+ | |||
+ | Alternativ: stdin/out an den Container hängen: | ||
+ | |||
+ | < | ||
+ | </ | ||
+ | |||
+ | Achtung: wieder raus mit **CTRL-p CTRL-q. **Details siehe [[https:// | ||
+ | |||
+ | ===== Docker Compose ===== | ||
+ | |||
+ | Docker Compose erzeugt Docker Applikationen, | ||
+ | |||
+ | - Das Dockerfile definiert die Laufzeit-Umgebung | ||
+ | - docker-compose.yml beschreibt die Services, die in Containern zusammen arbeiten | ||
+ | - " | ||
+ | |||
+ | Achtung: Die python basierten Docker Versionen (V1) in manchen Distro-Repos sind veraltet. Es empfiehlt sich, die V2 aus https:// | ||
+ | |||
+ | < | ||
+ | |||
+ | Um docker-compose files im Format V1 auszuführen, | ||
+ | |||
+ | < | ||
+ | root@docker2:/ | ||
+ | % Total % Received % Xferd Average Speed | ||
+ | | ||
+ | 100 1410 100 1410 0 | ||
+ | % Total % Received % Xferd Average Speed | ||
+ | | ||
+ | 0 | ||
+ | 100 2884k 100 2884k 0 | ||
+ | / | ||
+ | Configuring docker-compose alternatives | ||
+ | update-alternatives: | ||
+ | update-alternatives: | ||
+ | ' | ||
+ | use ' | ||
+ | </ | ||
+ | |||
+ | Test | ||
+ | |||
+ | < | ||
+ | root@docker2:/ | ||
+ | docker-compose - automatischer Modus | ||
+ | beste Version des Links ist / | ||
+ | Link verweist zur Zeit auf / | ||
+ | Link docker-compose ist / | ||
+ | / | ||
+ | / | ||
+ | </ | ||
+ | |||
+ | ===== compose yaml validieren ===== | ||
+ | |||
+ | < | ||
+ | docker compose -f docker-compose-pro.yaml config | ||
+ | </ | ||
+ | |||
+ | |||
+ | ====== Update per docker compose ====== | ||
+ | |||
+ | Update der Images, die im compose file referenziert sind | ||
+ | |||
+ | < | ||
+ | docker compose -f docker-compose-pro.yaml pull | ||
+ | |||
+ | </ | ||
+ | |||
+ | Daraus die Container neu bauen und startenb | ||
+ | |||
+ | < | ||
+ | docker compose -f docker-compose-pro.yaml up --build | ||
+ | |||
+ | </ | ||
+ | < | ||
+ | docker compose -f docker-compose-pro.yaml up --force-recreate --build -d | ||
+ | |||
+ | </ | ||
+ | |||
+ | Docker Compose startet die Container, aber nicht daemonisiert. Dazu -d hinzufügen: | ||
+ | |||
+ | < | ||
+ | docker compose up -d | ||
+ | |||
+ | </ | ||
+ | |||
+ | Üblicherweise nimmt man dafür systemd. | ||
+ | |||
+ | |||
+ | ===== Docker Netzwerke ===== | ||
+ | |||
+ | Standardmässig werden drei Netze bridge, host, none angelegt. Alle anderen sind custom Networks, die z.B: über compose angelegt wurden: | ||
+ | |||
+ | < | ||
+ | NETWORK ID | ||
+ | 54e670dd998d | ||
+ | 5b1cd745d5a3 | ||
+ | b56f108784b3 | ||
+ | f3619965eb7b | ||
+ | c91196bf89eb | ||
+ | b4f69adafbb3 | ||
+ | </ | ||
+ | |||
+ | Container werden an die bridge " | ||
+ | |||
+ | < | ||
+ | docker network inspect bridge | ||
+ | </ | ||
+ | |||
+ | sieht man den Zustand eines Docker networks | ||
+ | |||
+ | ==== Custom networks ==== | ||
+ | |||
+ | docker network create erzeugt ein eigenes Netzwerk: | ||
+ | |||
+ | < | ||
+ | docker network create –subnet 192.168.82.0/ | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | locutus:/ | ||
+ | </ | ||
+ | |||
+ | Mit | ||
+ | |||
+ | < | ||
+ | docker attach container1 | ||
+ | </ | ||
+ | |||
+ | sieht man das Netzwerk von innen | ||
+ | |||
+ | ===== Docker logs ===== | ||
+ | |||
+ | Analog zu tail -f: | ||
+ | |||
+ | < | ||
+ | docker logs --follow [containerid] | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Docker volumes ===== | ||
+ | |||
+ | Volumes sind Verzeichnisse/ | ||
+ | Volumes werden vom Docker Dämon gemanagt, die Daten liegen innerhalb des vom Docker Dämon verwalteten Speicherbereichs. | ||
+ | |||
+ | Doku: https:// | ||
+ | |||
+ | In compose: | ||
+ | < | ||
+ | services: | ||
+ | frontend: | ||
+ | image: node:lts | ||
+ | volumes: | ||
+ | - myapp:/ | ||
+ | volumes: | ||
+ | myapp: | ||
+ | external: true | ||
+ | </ | ||
+ | |||
+ | Syntax: **[lokales volume Verzeichnis Host]: | ||
+ | |||
+ | Immer relativ zum compose file gesehen! | ||
+ | ===== Docker build ===== | ||
+ | |||
+ | < | ||
+ | thommie@odysseus3: | ||
+ | Sending build context to Docker daemon | ||
+ | Step 1/3 : FROM freeradius/ | ||
+ | | ||
+ | Step 2/3 : COPY raddb/ /etc/raddb/ | ||
+ | | ||
+ | Step 3/3 : EXPOSE 1812-1813/ | ||
+ | | ||
+ | Removing intermediate container 6d5f572b0a8b | ||
+ | | ||
+ | Successfully built c6c0d41f944a | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== Begrifflichkeiten ==== | ||
+ | |||
+ | * Master = koordiniert den Cluster über die Kubernetes API - auf dem Master laufen keine Pods | ||
+ | * Node = Maschine, auf der Cluster (Pod) laufen (kann eine oder mehrere phys. Maschine oder VMs sein) | ||
+ | * Pod = einer oder mehrere Container, die gemeinsam Ressourcen nutzen (z.B. gemeinsamer Speicherplatz, | ||
+ | * Service: Funktion, die von einem oder mehreren Pods bereitgestellt wird | ||
+ | |||
+ | |||
+ | ===== Portainer ===== | ||
+ | |||
+ | < | ||
+ | docker run -d -p 8000:8000 -p 9000:9000 --name portainer --restart=always -v / | ||
+ | </ |