docker
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| docker [2018/06/30 17:00] – [Docker and Maven] kalaschnikow | docker [2019/07/06 11:50] (current) – [Docker Commandos] kalaschnikow | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Docker ====== | ||
| + | |||
| + | Container werden auf Basis von Images erstellt.\\ | ||
| + | Container -> eigener Prozess.\\ | ||
| + | |||
| + | Schichten: Die unteren Schichten sind von oberen nur lesbar. Beschreibbare Datenschicht ist containerspezifisch.\\ | ||
| + | Dateisystem-Overlays\\ | ||
| + | |||
| + | Container sind über ein eigenes Netzwerk verbunden -> User Defined Networks | ||
| + | |||
| + | Paradigma: ein Dienst pro Container | ||
| + | |||
| + | Mehrere Container verbinden: Docker Compose. | ||
| + | |||
| + | ===== c't Ressourcen ===== | ||
| + | **c't 15/2017** (ab S. 110 Docker Spezial)\\ | ||
| + | S.110: Docker-Container für Heim- und Webserver\\ | ||
| + | S.106: Wo Container punkten | ||
| + | |||
| + | **c't 6/ | ||
| + | S.57: Container-Testumgebung: | ||
| + | |||
| + | **c't 10/2018**\\ | ||
| + | S.160 : Fragen und Antworten | ||
| + | |||
| + | |||
| + | |||
| + | ===== Docker Commandos ===== | ||
| + | |||
| + | **Wichtig: | ||
| + | |||
| + | Container auflisten | ||
| + | <code bash> | ||
| + | # Laufende Container auflisten | ||
| + | docker ps | ||
| + | |||
| + | # Alle Container auflisten | ||
| + | docker ps -a | ||
| + | </ | ||
| + | |||
| + | Images auflisten | ||
| + | <code bash> | ||
| + | docker image ls | ||
| + | </ | ||
| + | |||
| + | Image in einem TAR-Archiv speichern | ||
| + | <code bash> | ||
| + | docker image save > / | ||
| + | </ | ||
| + | |||
| + | Nach dem Image '' | ||
| + | <code bash> | ||
| + | docker search gitweb | ||
| + | </ | ||
| + | |||
| + | Image '' | ||
| + | <code bash> | ||
| + | docker pull fraoustin/ | ||
| + | </ | ||
| + | |||
| + | Überflüssige Volumes finden | ||
| + | <code bash> | ||
| + | docker volume ls --filter dangling=true | ||
| + | </ | ||
| + | |||
| + | Überflüssige Volumes löschen | ||
| + | <code bash> | ||
| + | docker volume prune | ||
| + | </ | ||
| + | |||
| + | Herausfinden wo die dauerhaft zu speichernde Daten eines Images liegen: | ||
| + | <code bash> | ||
| + | docker inspect fraousin/ | ||
| + | </ | ||
| + | |||
| + | In den Container auf der Commandozeile reinschauen: | ||
| + | <code bash> | ||
| + | docker exec -it containerid /bin/bash | ||
| + | </ | ||
| + | |||
| + | Oder ein anderes Beispiel mit einer anderen Shell und einer anderen Parameter-Schreibweise: | ||
| + | |||
| + | <code bash> | ||
| + | docker exec -i -t containerid sh | ||
| + | </ | ||
| + | |||
| + | Container id kann man mit dem Befehl '' | ||
| + | |||
| + | |||
| + | Container laufen lassen | ||
| + | <code bash> | ||
| + | # Vorhandenen Container laufen lassen (der Name wird von Docker automatisch vergeben) | ||
| + | docker run fraoustin/ | ||
| + | |||
| + | # Container mit einem definierten Namen erzeugen und laufen lassen | ||
| + | docker run -d --name gitweb fraoustin/ | ||
| + | </ | ||
| + | |||
| + | Docker Container stoppen | ||
| + | <code bash> | ||
| + | docker stop < | ||
| + | </ | ||
| + | |||
| + | ===== User Defined Networks ===== | ||
| + | * Embedded DNS-Server | ||
| + | * Namensauflösung für Container | ||
| + | |||
| + | Jeder Container hat eine eigene IP und einen Prozessraum. | ||
| + | |||
| + | Alter Weg: über '' | ||
| + | |||
| + | |||
| + | User Defined Network '' | ||
| + | <code bash> | ||
| + | sudo docker network create avrilnet | ||
| + | </ | ||
| + | |||
| + | Container mit dem Alias '' | ||
| + | <code bash> | ||
| + | sudo docker run ... --network avrilnet --network-alias avrilmysql | ||
| + | </ | ||
| + | |||
| + | ===== MySQL Container für Keycloak Datenbank ===== | ||
| + | |||
| + | Container starten | ||
| + | <code bash> | ||
| + | sudo docker run --network avrilnet -p 3307:3306 \ | ||
| + | --name keycloakmysql -v / | ||
| + | -e MYSQL_DATABASE=keycloak -e MYSQL_USER=keycloak -e MYSQL_PASSWORD=keycYaopnlp=8 \ | ||
| + | -e MYSQL_ROOT_PASSWORD=mysqlYaopnlp=8 -d mysql:5.5 | ||
| + | </ | ||
| + | |||
| + | |||
| + | MySQL client aufrufen: | ||
| + | <code bash> | ||
| + | mysql -h 127.0.0.1 -P 3306 --user=root --password | ||
| + | </ | ||
| + | |||
| + | Dann dort die Datenbank und User anlegen: | ||
| + | <code sql> | ||
| + | CREATE DATABASE keycloak; | ||
| + | CREATE USER ' | ||
| + | GRANT ALL PRIVILEGES ON keycloak.* To ' | ||
| + | </ | ||
| + | |||
| + | |||
| + | MySQL Dump aus der Datei '' | ||
| + | <code bash> | ||
| + | mysql -h 127.0.0.1 -P 3306 --user=root --password -vvf keycloak < keycloak.sql | ||
| + | </ | ||
| + | |||
| + | ===== Keycloak Container für Avril ===== | ||
| + | |||
| + | Container starten: | ||
| + | <code bash> | ||
| + | |||
| + | # Zuerst die Version keycloak: | ||
| + | sudo docker run --network avrilnet --name avrilkeycloak -p 8180:8080 \ | ||
| + | -e MYSQL_PORT_3306_TCP_ADDR=avrilmysql \ | ||
| + | -e MYSQL_PORT_3306_TCP_PORT=3307 \ | ||
| + | -e DB_ADDR=avrilmysql \ | ||
| + | -e MYSQL_DATABASE=keycloak \ | ||
| + | -e DB_USER=keycloak \ | ||
| + | -e MYSQL_PASSWORD=keycYaopnlp=8 \ | ||
| + | -d jboss/ | ||
| + | |||
| + | # dann Container stoppen | ||
| + | sudo docker stop avrilkeycloak | ||
| + | |||
| + | # und loeschen (die DB bleibt aber intakt, da sie von dem MySQL container verwaltet wird) | ||
| + | sudo docker rm avrilkeycloak | ||
| + | |||
| + | # dann die Version keycloak: | ||
| + | # (bei dem ersten Start wird automatisch ein DB-Upgrade gemacht) | ||
| + | |||
| + | sudo docker run --network avrilnet --name avrilkeycloak -p 8180:8080 \ | ||
| + | -e DB_VENDOR=mysql \ | ||
| + | -e DB_ADDR=avrilmysql \ | ||
| + | -e MYSQL_PORT_3306_TCP_ADDR=avrilmysql \ | ||
| + | -e MYSQL_PORT_3306_TCP_PORT=3307 \ | ||
| + | -e MYSQL_PASSWORD=keycYaopnlp=8 \ | ||
| + | -d jboss/ | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== MySQL Container für Avril Datenbank ===== | ||
| + | |||
| + | Container starten | ||
| + | <code bash> | ||
| + | sudo docker run --network avrilnet -p 3308:3306 \ | ||
| + | --name avrilmysql -v / | ||
| + | -e MYSQL_DATABASE=avril -e MYSQL_USER=avril -e MYSQL_PASSWORD=avrilYaopnlp=8 \ | ||
| + | -e MYSQL_ROOT_PASSWORD=mysqlYaopnlp=8 -d mysql:5.5 | ||
| + | </ | ||
| + | |||
| + | |||
| + | MySQL client aufrufen: | ||
| + | <code bash> | ||
| + | mysql -h 127.0.0.1 -P 3308 --user=root --password | ||
| + | </ | ||
| + | |||
| + | Dann dort die Datenbank und User anlegen: | ||
| + | <code sql> | ||
| + | CREATE DATABASE avril; | ||
| + | CREATE USER ' | ||
| + | GRANT ALL PRIVILEGES ON avril.* To ' | ||
| + | </ | ||
| + | |||
| + | |||
| + | MySQL Dump aus der Datei '' | ||
| + | <code bash> | ||
| + | mysql -h 127.0.0.1 -P 3308 --user=root --password -vvf avril < avril.sql | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Avril Container ===== | ||
| + | |||
| + | <code bash> | ||
| + | sudo docker run --network avrilnet --name avril \ | ||
| + | -p 8080:8080 -p 9990:9990 \ | ||
| + | -v / | ||
| + | -v / | ||
| + | -v / | ||
| + | -it avril | ||
| + | </ | ||
| + | |||
| + | ===== Docker and Maven ===== | ||
| + | |||
| + | ==== Maven-Plugins ==== | ||
| + | [[https:// | ||
| + | [[https:// | ||
| + | |||
| + | ==== Articles ==== | ||
| + | [[https:// | ||
| + | [[https:// | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Misc ===== | ||
| + | |||
| + | |||
| + | [[https:// | ||
