Docker zum Kennenlernen


#1

Hallo Frank!

Interesse besteht sicherlich. Auch bei mir, aber ich denke es werden nicht alle die interessiert sind nach Karlsruhe kommen können. Daher mal eine Anfrage nach einem “Workshop” bei Vimeo, in der Art deiner Beiträge zu OMD.

z.B. Mailversand für Monitoringserver einrichten

Liebe grüße

und einen guten Rutsch in das neue Jahr

Thorsten


Welche Installationsstrategie für moodle/NextCloud/$Webdienst?
Docker: moodle 3.4 Container
#2

Hallo,

ich habe da mal was vorbereitet… Ich bin zwar kein Docker Experte, habe aber tatsächlich den Eindruck, dass es unserer Diskussion gut täte, wenn wir uns alle etwas besser auskennen würden - und weil man beim Erklären am besten lernt, versuch ich das mal. Wie weit wir/ich damit kommen, kann ich noch nicht sagen, man wird sehen.

Einen ersten Teil habe ich mal auf Vimeo und im Wiki hinterlegt. Darin gehts erst mal nur ums ausprobieren, außerdem wird ein erstes eigenes Miniimage als Basis für neue Container erzeugt. Damit man das leicht nachvollziehen kann, gibts auch eine vorbereitete OVA, auf der man das Ganze ganz leicht probieren kann.

Wikibereich:

http://www.linuxmuster.net/wiki/anwenderwiki:webapps:docker:grundlagen:start

OVA zum Download:

https://www.linuxmuster.net/downloads/ova/LMNDockerIntro.ova

Video bei Vimeo:

Diskussion und Fragen gerne hier im Discourse, Ergänzungen, Korrekturen, Transkiption zum Video wohl besser im Wiki.

VG

Frank

EDIT: Wenn man nur alle Videos sehen will, kann man einfach die Sammlung bei Vimeo aufrufen
https://vimeo.com/channels/1331836


#3

Hallo Frank,

das Herunterladen der OVA scheitert, es kommt folgende Fehlermeldung: „Forbidden - You don’t have permission to access /downloads/ova/LMNDockerIntro.ova on this server.“

Grüße,
Sven


#4

Hey,

Sorry, falsche Berechtigungen, jetzt sollts tun.

LG

Frank


#5

Hallo frank,
Das kommt wie bestellt für mich. Schau ich mir im neuen jahr an.
Vielen Dank und guten rutsch!
Wolfgang


#6

Hallo Frank!

Danke für das Intro!
Eine Frage drängt sich mir auf. Wo könnte man das im LMN-Umfeld nutzen? Könnte man die ganze linuxmuster.net in sowas reinpacken? Ein schiefgegangenes Update rückgängig machen scheint ja somit SEHR einfach…

Ein gutes Neues Jahr

Max


#7

Diesen Vorteil hast du mit jeder Form von Virtualisierung und Snapshots - egal ob Xen, KVM, LXD, Docker, VMWare, …

Aber darüber hatte ich schon mal nachgedacht. Derzeit läuft bei Linuxmuster alles auf einem Server. Was wäre, wenn man die einzelnen Services in Container packt? Die Frage ist natürlich, was das bringen würde :slight_smile:

Frohes neues Jahr!
Stephan


#8

Hallo!

ja, aber z.B. bei KVM finde ich die Snapshot-Lösung nicht wirklich bedienungsfreundlich (es wird eine komplette Kopie der VM erzeugt (oder ich mache was falsch), zurückspringen auf alten Stand geht nicht mit 1 Klick…
Außerdem hat man hier (wenn ich das richtig verstehe) deutlich mehr Performanz, oder?

LG
Max


#9

Genau das wird ja gerade im Parallelthread diskutiert: z.B. Webdienste abkoppeln und per docker getrennt verwalten, damit z.B. Upgrades völlig unabhängig von irgendwelchen Repositorys laufen.
Hier nochmal ein Beispiel, wie einfach ein Upgrade von Nextcloud 11 —> 12 damit läuft:
https://kopfkrieg.org/2017/06/15/nextcloud-docker-nginx/ (ganz unten)

Wenn man solche docker-Instanzen einsetzen kann, hat man es sehr modular, meine ich…

Schönen Gruß
Michael


#10

Hallo Michael,

ja, da lese ich mit :slight_smile: Aber könnte man es auch als kompletten Virtualisierungs-“Ersatz” einsetzen?

LG
Max


#11

OK, das kann man sicher, aber zuviel Virtuslisierung erinnert mich wieder an diesen alten Matrix-Witz:


#12

Nein, das geht glaube ich nicht. Container sind nicht das gleiche wie eine “richtige” VM. LXD kommt dem schon sehr nahe, aber es gibt Grenzen, gerade bei low-level Geschichten.


#13

Hi Frank. Ich habe mir gerade dein Video angeschaut. :+1: Ein sehr guter Einstieg! Ich hatte die Verwaltung der beendeten Container bisher immer portainer.io überlassen, aber wenn man die Befehle kennt, geht’s natürlich auch so.

Ich frage mich die ganze Zeit, ob man sich durch die steigende Kompexität nicht auch ungeahnte Probleme reinholt – wie z.B. Dateisysteme, auf die zwei Docker-Container zugreifen wollen (und auch können?) usw …

Gibt’s bald Teil 2? :slight_smile:
Schönen Gruß,
Michael


#14

Hallo Michael,

Danke! Sinn der ganzen Sache ist bei den Filmchen zunächst nicht, Dienste mit Docker Containern effektiv zu betreiben, sondern eher, mal so einen Überblick zu bekommen, wie die ganzen Sachen ineinander greifen - und welche Möglichkeiten es eröffnet, innerhalb der linuxmuster-Community praktische Anwendungsfälle auszutauschen.

Die Planung, wie man Container erstellt, pflegt, updatet, wie weit man das modularisiert (und ob überhaupt) ist ja erst dann vernünftig zu diskutieren, wenn man mal eine Vorstellung davon hat, was so ein Container ist, wie man ihn macht, woher man ihn bekommt und wie man ihn miteinander teilt.

Teil 2 kommt gleich, muss noch das Filmchen schneiden.

VG

Frank


#15

Hai,

so, Teil 2: Wie man eigene Images aus einem “Dockerfile” erzeugt, eine kleine Strategie zum Debugging und das erste (vollkommen sinnlose) Image auf dem Dockerhub (https://hub.docker.com/u/ironiemix/)

Im Wiki:
http://www.linuxmuster.net/wiki/anwenderwiki:webapps:docker:grundlagen:docker02:start

VG

Frank


#16

OT: Womit schneidest du? Ich nehme immer shotcut

Und gleich noch eine andere Frage, die hier neulich auch schon mal von @Tobias angesprochen wurde – und zwar die Vertrauensstellung: Nehmen wir also mal kurz an, dass du in deinem Container nicht “cowsay” sondern irgendein fieses rootkit installiert & verschleiert hast und ich benutze das (ohne etwas zu ahnen). Inwiefern sind die Container voneinander abgeschottet (Sandbox-Prinzip) bzw welchen Schaden kann so ein Container ggf dennoch am ganzen System anrichten? Das wären imho ebenfalls ganz interessante Infos, meine ich.

[“etwas später”] … erneut super gemacht. Danke für Teil 2! Das hat wirklich Potenzial!

Schöne Grüße,
Michael


#17

Hallo Michael,

Mit Openshot. Bin aber nicht so zufrieden, stürzt recht oft ab und bei Übergängen und so was zeigt es komische Verhaltensweisen (vergisst die Richtung und so was…) - drum gibts auch keine (Übergänge).

Shotcut werde ich mal ausprobieren, danke für den Tipp. Insgesamt habe ich für die Videos gerade folgendes Setup:

VG

Frank


#18

Hallo,

Die Sicherheit von Docker (und auch LXC) Containern beruht auf Namespaces und Cgroups, das sind Features, die der Linux-Kernel schon recht lange hat. Einen guten Überblick darüber bietet der folgende Artikel, der aber nicht mehr ganz aktuell ist:

Durch das Werkzeug “Docker” und das Biotop drumrum hat die Containerization massiven Schub bekommen - mal drüber nachgedacht, warum MS das Linux-Subsystem in Windows 10 eingebaut hat? Im industriellen Maßstab bist du als Serverbetriebssystem raus, wenn du keine Container kannst.

Als Fazit bin ich zum Schluss gekommen: Offizielle Images und daraus gebaute eigene Images sind letztlich wahrscheinlich sicherer als “von Hand” gepflegte Server und in jedem Fall sehr viel einfacher zu pflegen. Dasselbe gilt für Software, die offiziell als Docker-Container zur Verfügung gestellt wird.

Beispiel: Dieses Forum ist ein Ubuntu 16.04 Host mit einem einzigen Dockercontainer, der von den Machern von Discourse zur Verfügung gestellt wird. Update ist ein Update des Containers mit Werkzeugen der Discoursemacher - extrem Zuverlässig und bequem, super gepflegt, schnelle Reaktionszeit. Discourse “von Hand” installieren und pflegen zu wollen wäre IMHO einfach nur eine sehr schlechte Idee.

Wenn jetzt allerdings auf meinem Docker Host noch andere Dienste laufen, drängt sich natürlich die Frage auf: Mountet der Container wirklich nur Volumes rein, die ihn was angehen oder mopst der meine shadow Datei? (Sehr plakativ formuliert).

Das Problem ist, wenn du die Container nicht selber baust machst du dich in extremem Maße von denjenigen Abhängig, die die Images zur Verfügung stellen, sowohl was die Vertrauenswürdigkeit angeht, als auch (vor allem) was die Pflege, also die Updates dessen angeht, was drinsteckt.

Beispiel: Es gibt einen Container mit MRBS drin, “last pushed 2 years ago” - keine weiteren Fragen.

Darum auch an dieser Stelle meine 2 Cent zur Reverse Proxy Diskussion: Wir brauchen IMHO weder einen Docker Container noch traefik: In dem Umfeld, in dem wir uns bewegen, werden wir nämlich nicht automatisch Container zwischen Hosts hin und herschieben, so dass die Proxys dynamisch reagieren müssen, sondern wir haben ein oder zwei Dockerhosts für unsere Schuldienste und für die kann ich die Unterverzeichnisse und Ports ganz unproblematisch von Hand oder per Skript in meinen Reverse Proxy auf dem Docker Host mit der zugehörigen öffentlichen IP Eintragen. Der Reverse Proxy bekommt per dehydrated ein SSL Zertifikat von Letsencrypt, fertig ist die Hütte. KISS.

Viele Grüße,

Frank


#19

Hai,

in Teil 3 des Docker Tutorials bauen wir uns mal einen Container mit einem Webdienst drin (Openschulportfolio) - der ist jetzt schon fast nützlich.

Wiki:
https://www.linuxmuster.net/wiki/anwenderwiki:webapps:docker:grundlagen:docker03:start

VG

Frank


#20

Hi Frank,

Ich denke genau das ist der springende Punkt. Wenn wir von der Software, die wir in der Schule verwenden wollen ein offiziell gepflegtes Image gibt, ist alles gut. Falls jedoch nicht, bleibt einem meist nur die Installation von Hand. Das gleiche Problem hatte ich, als ich z.B. einmal Snaps ausprobiert habe. Für den Desktop eine tolle Sache, für den Server eigentlich auch, aber auch nur dann, wenn es ein aktuelles Image gibt. Der Nextcloud-Snap z.B. ist nicht brauchbar.

vG Stephan