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 15/2017 (ab S. 110 Docker Spezial)
S.110: Docker-Container für Heim- und Webserver
S.106: Wo Container punkten
c't 6/2018
S.57: Container-Testumgebung: Play with Docker
c't 10/2018
S.160 : Fragen und Antworten
Wichtig: Alle folgenden Commandos sollte man am besten mit sudo ausführen.
Container auflisten
# Laufende Container auflisten docker ps # Alle Container auflisten docker ps -a
Images auflisten
docker image ls
Image in einem TAR-Archiv speichern
docker image save > /tmp/blubb.tar
Nach dem Image gitweb suchen
docker search gitweb
Image fraoustin/gitweb herunterladen
docker pull fraoustin/gitweb
Überflüssige Volumes finden
docker volume ls --filter dangling=true
Überflüssige Volumes löschen
docker volume prune
Herausfinden wo die dauerhaft zu speichernde Daten eines Images liegen:
docker inspect fraousin/gitweb
In den Container auf der Commandozeile reinschauen:
docker exec -it containerid /bin/bash
Oder ein anderes Beispiel mit einer anderen Shell und einer anderen Parameter-Schreibweise:
docker exec -i -t containerid sh
Container id kann man mit dem Befehl docker ps herausfinden.
Container laufen lassen
# Vorhandenen Container laufen lassen (der Name wird von Docker automatisch vergeben) docker run fraoustin/gitweb # Container mit einem definierten Namen erzeugen und laufen lassen docker run -d --name gitweb fraoustin/gitweb
Docker Container stoppen
docker stop <container_id>
Jeder Container hat eine eigene IP und einen Prozessraum.
Alter Weg: über –link Option.
User Defined Network avrilnet anlegen:
sudo docker network create avrilnet
Container mit dem Alias avrilmysql im Network avrilnet laufen lassen:
sudo docker run ... --network avrilnet --network-alias avrilmysql
Container starten
sudo docker run --network avrilnet -p 3307:3306 \ --name keycloakmysql -v /dockerdata/keycloakmysql:/var/lib/mysql \ -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:
mysql -h 127.0.0.1 -P 3306 --user=root --password
Dann dort die Datenbank und User anlegen:
CREATE DATABASE keycloak; CREATE USER 'keycloak'@'%' IDENTIFIED BY 'keycYaopnlp=8'; GRANT ALL PRIVILEGES ON keycloak.* TO 'keycloak'@'%';
MySQL Dump aus der Datei keycloak.sql in die Datenbank keycloak einspielen:
mysql -h 127.0.0.1 -P 3306 --user=root --password -vvf keycloak < keycloak.sql
Container starten:
# Zuerst die Version keycloak:2.5.1.Final : 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/keycloak-mysql:2.5.1.Final # 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:3.4.3.Final starten # (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/keycloak:3.4.3.Final
Container starten
sudo docker run --network avrilnet -p 3308:3306 \ --name avrilmysql -v /dockerdata/avrilmysql:/var/lib/mysql \ -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:
mysql -h 127.0.0.1 -P 3308 --user=root --password
Dann dort die Datenbank und User anlegen:
CREATE DATABASE avril; CREATE USER 'avril'@'%' IDENTIFIED BY 'avrilYaopnlp=8'; GRANT ALL PRIVILEGES ON avril.* TO 'avril'@'%';
MySQL Dump aus der Datei avril.sql in die Datenbank avril einspielen:
mysql -h 127.0.0.1 -P 3308 --user=root --password -vvf avril < avril.sql
sudo docker run --network avrilnet --name avril \ -p 8080:8080 -p 9990:9990 \ -v /dockerdata/avril/modules/system/add-ons:/opt/jboss/wildfly/modules/system/add-ons \ -v /dockerdata/avril/upload:/opt/jboss/wildfly/upload \ -v /dockerdata/avril/modules/system/layers/base/com/mysql:/opt/jboss/wildfly/modules/system/layers/base/com/mysql \ -it avril
Spotify Dockerfile Maven Plugin
Docker-Maven-Plugin by Fabric8io (Documentation)
Docker auf Synology Diskstation → DS918+ - hat Docker Unterstützung