User Tools

Site Tools


docker

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/2018
S.57: Container-Testumgebung: Play with Docker

c't 10/2018
S.160 : Fragen und Antworten

Docker Commandos

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>

User Defined Networks

  • Embedded DNS-Server
  • Namensauflösung für Container

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

MySQL Container für Keycloak Datenbank

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

Keycloak Container für Avril

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

MySQL Container für Avril Datenbank

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

Avril Container

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

Docker and Maven

Maven-Plugins

Articles

Misc

Docker auf Synology Diskstation → DS918+ - hat Docker Unterstützung

docker.txt · Last modified: by kalaschnikow