Zeile 3: |
Zeile 3: |
| == Installation == | | == Installation == |
| | | |
| + | ==== Installation unter Debian 9 Stretch ==== |
| + | |
| + | Siehe |
| + | * https://linuxconfig.org/how-to-install-docker-engine-on-debian-9-stretch-linux |
| + | |
| + | |
| + | ==== Installation unter Ubuntu ==== |
| sudo aptitude install lxc apparmor docker.io | | sudo aptitude install lxc apparmor docker.io |
| sudo addgroup USER docker | | sudo addgroup USER docker |
Zeile 12: |
Zeile 19: |
| kann man sich anzeigen lassen, wo Docker Images u.Ä. abspeichert. In der <code>/etc/fstab</code> kann man das auf einen Ordner einer anderen Partition umhängen: | | kann man sich anzeigen lassen, wo Docker Images u.Ä. abspeichert. In der <code>/etc/fstab</code> kann man das auf einen Ordner einer anderen Partition umhängen: |
| /media/anderePartiton/aufsRoot /var/lib/docker/aufs none bind 0 0 | | /media/anderePartiton/aufsRoot /var/lib/docker/aufs none bind 0 0 |
| + | |
| + | |
| + | Alternativ gibt man in der Datei <code>/etc/default/docker</code> in den <code>DOCKER_OPTS</code> den zusätzlichen Parameter <code>-g</code> an. Beispiel: |
| + | DOCKER_OPTS="-g /mnt/mybigdata/dockerroot" |
| | | |
| == Erstellen eines eigenen Basis-Images == | | == Erstellen eines eigenen Basis-Images == |
Zeile 42: |
Zeile 53: |
| | | |
| Dann wechselt man in das Verzeichnis mit <code>cd</code> und baut das Image mit folgendem Befehl: | | Dann wechselt man in das Verzeichnis mit <code>cd</code> und baut das Image mit folgendem Befehl: |
| + | docker build -t IMAGENAME:IMAGETAG . |
| | | |
| == Ausführen einer Shell == | | == Ausführen einer Shell == |
Zeile 56: |
Zeile 68: |
| | | |
| | | |
| + | == Privates Repository == |
| + | |
| + | |
| + | === Installation und Start === |
| + | Für ein privates Repository startet man - ganz docker-like - einen entsprechenden Container mit dem Image "registry":<ref>Siehe https://docs.docker.com/registry/deploying/ .</ref> |
| + | docker run -d -p 5000:5000 --restart=always --name registry -v `pwd`/data:/var/lib/registry registry:2 |
| + | |
| + | === Konfiguration einer unsicheren privaten Registry === |
| + | Für Testzwecke kann man auch von anderen Rechnern im privaten Netzwerk UNGESICHERT auf die Registry zugreifen. Dazu muss man dem Daemon das aber explizit erlauben, indem man folgende Zeile in <code>/etc/default/docker</code> einfügt: |
| + | DOCKER_OPTS="--insecure-registry registryrechner:5000" |
| + | |
| + | Dann muss man diesen Daemon neu starten: |
| + | sudo service docker restart |
| + | |
| + | === Eintragen eines Images im Registry === |
| + | |
| + | Zunächst muss das vorhandene Image umgetaggt werden: |
| + | |
| + | docker tag user/eigenesimage registryrechner:5000/user/eigenesimage |
| + | |
| + | Dann muss es hochgeschoben werden: |
| + | docker push registryrechner:5000/user/eigenesimage |
| + | |
| + | == Docker und Netzwerk == |
| + | |
| + | Einen Port des Containers kann man mit der Option -p als Port des Hosts zur Verfügung stellen: |
| + | docker run -p 4304:4304 myimage |
| + | |
| + | Leider scheint es Probleme mit IPv4-Adressen des Hosts zu geben. Abhilfe schafft in kleineren Fällen die Option <code>--net=host</code>. Diese sollte aber aus Sicherheitsgründen vermieden werden, weil damit von außen voller Zugriff auf alle Ports des Containers gegeben wird. |
| + | |
| + | === Docker und IPv6 === |
| + | |
| + | Docker hat standardmäßig die IPv6-Unterstützung nicht eingeschaltet. Das kann man aber |
| + | machen: |
| + | * https://docs.docker.com/config/daemon/ipv6/ |
| + | * https://gdevillele.github.io/engine/userguide/networking/default_network/ipv6/ |
| + | * https://medium.com/@skleeschulte/how-to-enable-ipv6-for-docker-containers-on-ubuntu-18-04-c68394a219a2 |
| + | * https://dev.to/joeneville_/build-a-docker-ipv6-network-dfj |
| + | |
| + | == Docker updates == |
| + | |
| + | Auch Docker container müssen auf neue Versionen überwacht werden. |
| + | |
| + | === Monitoring container updates === |
| + | |
| + | Mit [https://fmartinou.github.io/whats-up-docker/#/ What's up Docker] kann man sich z.B. eine Email zuschicken lassen, wenn ein Container-Image upgedatet wurde. |
| + | |
| + | == Troubleshooting Docker == |
| + | |
| + | === SystemD läuft nicht === |
| + | |
| + | Es gibt grundsätzlich zwei Möglichkeiten, [[systemd]]-services bereitzustellen: |
| + | |
| + | * SystemD installieren und viel Funktionalität zu entfernen oder |
| + | * https://github.com/gdraheim/docker-systemctl-replacement |
| + | |
| + | === Chrome/Chromium startet nicht === |
| + | |
| + | Wenn Chrome nicht startet (Fehlermeldung: <small>Failed to move to new namespace: PID namespaces supported, Network namespace supported, but failed: errno = Operation not permitted</small>), hilft das Argument <code>--no-sandbox</code>.<ref>Siehe https://github.com/wechaty/wechaty/issues/26</ref> |
| + | |
| + | == Einzelne Images == |
| + | |
| + | === MySQL-Image === |
| + | |
| + | Siehe für ein einfaches Dockerfile für einen [[MySQL]]-Container: |
| + | * https://entwickler.de/online/docker-am-praktischen-beispiel-mit-wordpress-150107.html |
| + | |
| + | Wenn MySQL nicht mit |
| + | mysqld |
| + | startet, kann es daran liegen, dass der Socket nicht erstellt werden kann. Dann: |
| + | mkdir /var/run/mysqld/ |
| + | chmod a+w /var/run/mysqld/ |
| | | |
| | | |