Brauch eigentlich nur die Seal. Eigentlich brauch ja nicht das
ganze Kladderadatsch drumherum und da ist Kladderadatsch ist
ein Wunder wundervolles Wort Coding Buddies Dein Podcast rund
um Softwareentwicklung und aktueller Tech News.
Herzlich Willkommen. Halli Hallo und herzlich
Willkommen zur neuen Folge vom Coding Buddies Podcast mit mir,
dem Fabi und natürlich auch dem Tino, der mir hier virtuell
schon gegenüber sitzt und ins Mikro grinst.
Moin. Tino geht ab.
Wie geht's? Herzlich Willkommen.
Alles alles gut zu weit, alles gut.
Ich bin bereit für die Folge, ich habe Bock, du bist bereit,
das ist schön, wir können ja auch gleich relativ schnell rein
starten, vorher wollen wir noch mal einmal ganz kurz.
Uns starten wir doch nicht schnell rein.
Na gut. So gut wie ich wollte mich noch
mal in unserem Namen bei Kai bedanken, denn Kai hat eine
kleine Spende über den. Wir wollen unseren Spenden Link
in den Shownotes hat uns eine kleine Spende zukommen lassen
und das nicht zum ersten Mal. Also vielen, vielen Lieben dank
Kai vielen vielen Dank. Das freut uns mega und auch an
Johanna einen großen Dank, denn Johanna hat auch was gespendet
und hat dazu geschrieben, dass sie zwar eigentlich gar nicht
ursprünglich aus der Softwareentwicklung kommt, aber
Berührungspunkte hat und unsere Infos super hilfreich findet und
das freut uns natürlich mega. Ja, auch vielen Dank an dich,
Johanna, vielen Dank. Alright genau, und jetzt würde
ich sagen, bevor wir ins Thema starten, ich weiß ja, geht es
noch mal ganz kurz. Kleiner Reminder, es läuft ja
gerade die Implementierungsphase noch von unserem aktuellen
Programmierwettbewerb Flappy Buddy und da gibt es natürlich
coole Sachen zu gewinnen, da auf jeden Fall mitmachen ist.
Also wenn ihr Infos dazu braucht auf unserer Homepage auch in den
Show Notes verlinkt Tino, Was gibt es denn da zu gewinnen?
Sagt doch mal kurz. Ja, also der erste Preis, also
der erste Platz, bekommt 2 Tickets für die WEA Developers
Konferenz dieses Jahr im Juli findet sie statt in Berlin, die
Leute und Jungs und Mädels von WEA Developers haben uns quasi 2
Tickets gesponsert für unser Turnier, auch da noch mal vielen
vielen lieben dank und das ist natürlich mega geiler
Hauptpreis, denn das ist die größte Entwicklerkonferenz
Europas und es gibt jedes Jahr unfassbar spannende Themen und
Vorträge. Und Platz 2 und 3 bekommen
jeweils eine limitierte Flappy Buddy Tasse.
Ich habe auch den Prototypen vor mir und trinke gerade einen
Kaffee dadraus sie sieht fantastisch aus, Leute wirklich
allein dafür lohnt sich schon und Platz 2 kriegt zusätzlich
noch einen Wunschgutschein im Wert von 50.
Euro sehr sehr geil. Ich trinke übrigens auch aus dem
Prototypen, jeder braucht. Ja, einen Prototypen.
Um es für gut zu befinden, ganz genau.
Und für alle, die sich sagen, Ey, ja, ich mach zwar nicht beim
Wettbewerb mit, möchte aber vielleicht doch irgendwie noch
was in Benefit haben. Coding Buddies 10 gibt 10% auf,
zum Beispiel wenn auf auf n Ticketkauf zum Beispiel bei bei
der WEA Developer genau ja super OK, dann haben wir ja das
organisatorisch abgehakt, jetzt können wir das Thema starten,
ist die Werbung wieder vorbei, jetzt genau was worum geht es
denn heute? Hau doch mal raus.
Wir haben uns heute n Grundlagenthema ausgesucht, was
so in aller Munde ist oder sehr weit verbreitet.
Aber vielleicht weiß der eine oder andere, der vielleicht noch
so am Anfang der Softwareentwicklungskarriere
steht, noch nicht so wirklich was damit anzufangen und es ist
aber wirklich n sehr wichtiges Thema und deswegen denke ich, es
ist cool, wenn wir da heute mal so ne grundlagenfolge, so ne so
ne überblicksfolge machen und zwar zum Thema Container in der
Softwareentwicklung klingt doch gut und da einfach auch mal
klären quasi. Warum sind Sie so wichtig?
Was sind überhaupt Container und ja, quasi als Ziel setzen da den
Überblick zu geben, damit jeder sich nach der Folge denkt, ach,
jetzt weiß ich, was Container sind und ich weiß, warum sie
wichtig sind. Ganz genau.
Zusätzlich wollen wir auch noch n bisschen das ganz abgrenzen zu
VMS, also virtuellen Maschinen, also weil man könnte sich ja
vielleicht denken, so OK, virtuelle Maschinen hab ich auch
schon mal gehört, irgendwie ist das für mich alles so ein Brei,
dass man da auf jeden Fall auch noch mal n Überblick kriegt.
Was denn überhaupt? Der Unterschied dann zu einer
virtuellen Maschine ist, ne. Ja, ich mein um das ganze Mal
einzuleiten, können wir uns ja mal folgendes Szenario
vorstellen. Stell dir immer noch mal eine
Zeit vor Containern vor oder auch virtuelle Maschinen, wie du
gerade genannt hast du wirklich mal komplett ohne mit Feuer?
Machen noch so eine. Sache ja genau, also du hast
quasi, du warst gerade so in der Höhle am Feuer machen und
nebenbei ist dein Windows PC hochgefahren weiß ich nicht was
war das für ein Windows 95? Nein, also ganz so weit
natürlich nicht zurück aber schon in die in das Zeitalter
der PC s. Und jetzt stell dir noch mal
vor, du hast du jetzt mehrere Leute die an gewissen Projekten
arbeiten oder Leute kommen dazu oder du musst einfach ja
Software Lösungen die du bereitstellt skalieren.
Und wie anstrengend war es eigentlich immer gleiche
Bedingungen zu schaffen auf dem Zielsystem oder auf deinem
eigenen System um überhaupt erstmal in die Entwicklung zu
kommen oder gewisse Softwarelösungen laufen lassen
zu können alle. Sag ich mal Abhängigkeiten
aufzulösen und das ist halt genau der Ansatzpunkt, wo man
sagt, OK, da, da hat man was für gebraucht, das hat einfach
unfassbar viel Zeit gefressen und war fehleranfällig hoch 10
ne und da kam oder kommen auch immer noch.
Die Container ins Spiel und deswegen lass uns doch mal kurz
definieren, was sind Container und wie können Sie jetzt dabei
helfen zu sagen, Hey, wir können jetzt ganz einfach auf PCA und b
das gleiche laufen lassen und müssen nicht erst mal gucken was
ist bei A anders, was ist bei B anders, wie kriegen wir sie
gemeinsam? So, ja, aber was du gerade noch
gesagt hast hier mit diesem gleiche Umgebung schaffen und so
weiter ne also ich meine das kennt man ja heutzutage
tatsächlich auch irgendwo noch. Also angenommen du hast jetzt
zum Beispiel, ich rede jetzt ein bisschen aus dem Nähkästchen,
weil ich finde das gerade so bei bestimmten App Frameworks, wenn
du mit Apps arbeitest. Da hatten wir ja zum Beispiel
auch in kürzerer Vergangenheit mal so das Problem, dass quasi
auf du hast es eingerichtet, ich habe es eingerichtet, wir haben
irgendwie entwickelt und dann hatten wir es in Repo geballert
und. Und ich hab mir das dann zum
Beispiel gezogen und du hast jetzt gezogen und dann wusste
man erstmal ging es nicht, weil irgendwie einer hatte ne falsche
Version von von ne Android ne falsche Android Version oder was
auch immer drauf auf dem Rechner.
Sowas ist halt auch manchmal einfach nervig.
Ne genau. Und das ist genau der Grund
warum man sich sowas wie Container dann überlegt hat.
Also weil Spoiler war. Wir haben es da halt nicht
verwendet und dann haben wir natürlich genau diese Painpoints
wieder gespürt. Ja, richtig, genau und also n
Container an sich. Ist ja im Endeffekt eine
virtuelle Umgebung, bei der sozusagen Software oder
Softwarepakete mit entsprechenden Abhängigkeiten
sozusagen gebündelt werden. Und ein Container heißt ja nicht
um, also ohne Grund Container, weil es geht ja wirklich darum,
dass du wieso ein Schiffscontainer hast, wo du
bestimmte Sachen reinpackst ne und dann wird das halt einfach
dann, dann hast du alles was da drin ist.
Ne und das das was du brauchst. Aber ich hab da noch ne ganz
kleine Analogie mal wieder mitgebracht.
Also theoretisch ist natürlich auch die Containeranalogie auch
irgendwo ne, also der Vergleich mit Containern auch irgendwo ne
Analogie, da kommt es ja her, aber um sich das vielleicht noch
mal n bisschen anders vorzustellen, wenn man also
angenommen, man hat zum Beispiel n Restaurant ne und sagt ich
möchte jetzt essen irgendwie verfügbar machen und es soll
irgendwie immer gleich schmecken, ne?
Und wenn du jetzt zum Beispiel sagst okay, du hast jetzt die
klassische Installation auf einem Computer ohne Container,
so wie wie du es am Anfang gesagt hast, eine Windows 95 in
der Höhle mit dem Feuer, da kann man sich das ungefähr so
vorstellen. Wenn du das mit diesem
Restaurant vergleichst, dass du eigentlich, wenn du sagst okay,
du hast irgendwie ein Rezept, also du verschickst am Ende
nicht das Essen, sondern verschickst eigentlich nur das
Rezept und hoffst halt, dass. Die Küche, in der das dann
nachgekocht wird, dieses Rezept, auch wirklich alles da hat, also
dass du quasi die gleichen Zutaten auch wirklich dort
vorhanden hast, die du brauchst, dass du wirklich auch den den
richtigen Herd hast, dass du, dass der Herd auch die richtige
Temperatur erreicht, solche Sachen, ne, das ist sozusagen
die Analogie zu diesem Rechner. Wenn du jetzt sagst, OK,
virtuelle Maschinen, das ist ja, gehen wir auch noch ein bisschen
näher drauf ein, aber das ist ja so ein Zwischenschritt, da würde
man im Endeffekt in dieser Analogie ne kleine Miniküche
verschicken. Wo du sagst, OK, das ist hier,
guck mal das ist ne Küche, da ist n Herd dabei, da ist n Ofen
dabei, da hast du noch ne Pfanne die Gewürze, das hast du alles
mit drin und gibst das dann sozusagen raus und dann kannst
du dir das Essen nachkochen so und dann hast du ja irgendwie
mehr oder weniger alles was du brauchst.
Da ist natürlich aber relativ ja gut, man merkt schon relativ
schnell, dass da man da ne miniküche verschiffen muss, das
ist vielleicht nicht gerade sehr effizient und so n Container an
sich, das ist. Kannst du dir dann in dieser
Analogie so vorstellen, dass du eigentlich essensboxen
rausschickst, wo das Essen, was du brauchst, sozusagen alles
schon drin ist? Ist fertig.
Das ist immer das Gleiche, also jede Essensbox, die du
rausschickst ist quasi immer das gleiche, was da drin ist.
Und du hast halt genau das was du willst, ist dort vorhanden.
Ja, ist eine ganz coole Analogie und ich finde, es zeigt halt
auch einen wichtigen Punkt, wenn man jetzt schon mal bei VMS ist.
Weil, was man sagen kann, auf jeden Fall auch, was man jetzt
an der Analogie schon versteht, ist, dass Container auf jeden
Fall viel leichtgewichtiger sind als VMS, weil wie du so schön
gesagt hast, ne VM. So du schickst die ganze Küche
mit, wir werden das gleich noch mal genau technisch fachlich
definieren, aber das zeigt halt auch schon in der Analogie, Hey
warte mal das eine, da schick ich quasi viel weniger oder ich
brauch viel weniger als bei bei der ganzen Küche die ich
mitschicke und sage ey hier hast du ne ganze Küche, jetzt musst
du aber noch kochen sozusagen. Das ist auf jeden Fall eine
ganz, ganz coole Gegenüberstellung, weil wenn man
sich jetzt einen Container anguckt.
Also du hast gesagt, das ist eine virtuelle Umgebung, die
bündelt quasi Abhängigkeiten, die also die Software quasi um
gewisse Prozesse laufen zu lassen oder Funktionalitäten
anbieten zu können, Softwarelösungen zu beinhalten
und. Deswegen lass uns doch mal
gucken, was was beinhaltet. So n Container.
Du hast ja auch gesagt, so jetzt so am Hafen so n schöner
Schiffscontainer, was kann da jetzt so alles drin sein ne?
Also wir haben natürlich zum einen den Code der Anwendung
sagen wir mal also wir wollen jetzt ne Anwendung innerhalb
dieses Containers laufen lassen, dann ist natürlich da auch.
Der Code drin sag ich mal. Also die Anwendung an sich, die
ausgeführt werden kann. Wir haben die Abhängigkeiten,
das haben wir jetzt ja schon mehrfach gesagt, weil das ist
halt wirklich der große Benefit, dass ich immer dadurch ne
Umgebung schaffe, wo drin unsere Anwendung laufen kann, das ist
ja der große Vorteil, das heißt nicht Dein PC muss dafür sorgen,
dass alle Abhängigkeiten da sind, sondern die sind jetzt
Gekapselt in unserem Container, zusammen mit der Anwendung.
Was sind so Abhängigkeiten, Bibliotheken, Frameworks, alles
alle, so alle Randbedingungen, die wir quasi brauchen.
Wir haben eine Konfiguration auch wahrscheinlich da drin
liegen, wie soll unsere Software laufen, wie soll sie
aufgestartet werden, gibt es verschiedene Modi die ich quasi
von außen triggern kann, sozusagen ja und eine
Laufzeitumgebung ne, also das ganze muss natürlich auch sag
ich mal. Ne Runtime haben um ausgeführt
werden zu können. Das heißt, dass ich von außen
sagen kann, Container A leg los oder ich gebe jetzt jemand
Container a und sag drück Start so und dann macht Container a
was es soll so wie er hergestellt wurde sag ich mal ne
also im Prinzip bei dir mit dem Essen so wir haben da alles
vorbereitet es ist genau das was der Kunde erwartet nach dem
Motto hier hast du jetzt deinen Teller.
Lass dir schmecken. Weißt du ja genau, Besteck ist
auch noch drin, weil du kannst ja theoretisch nicht davon
ausgehen, dass so wirklich Besteck überall vorhanden ist.
Nur mal so als Beispiel ne. Also du hast halt wirklich alles
was du im Endeffekt brauchst um dein Ziel zu erreichen.
In der Analogie war es natürlich, dass man das Essen
essen kann, ne. Genau.
Aber. Was, wo ich irgendwie dran
denken muss, ist, wenn man jetzt zum Beispiel oder noch NN
gewisser Vorteil davon von von solcher containerisierung,
Containerisierung wie Containerisation, wie man das so
nennen mag, ist ja auf jeden Fall, dass du ja, wie du schon
meintest, du brauchst es nicht auf deinem Rechner, es ist nur
in dem Container, bedeutet also wenn du den Container wieder
wegschmeißt, hast du keine Veränderungen.
Auf deinem zugrundeliegenden System, und das ist ja irgendwie
das Schöne, weil angenommen, und das ist mir auf jeden Fall schon
mal passiert, dass man ne Node version hatte, ne und du hast
Node Versionen, die dann vielleicht auch kompatibel sind
mit anderen Frameworks und ab einer bestimmten Version ist das
dann nicht mehr so. So, und dann musst du zum
Beispiel vielleicht, also du hast dann vielleicht irgendwie
dein dein System und sagst, OK, ich bin jetzt an der und der
Anwendung dran, was auch immer ich möchte jetzt irgendwie auf
einer, ich muss jetzt irgendwie meine Note Version updaten, so
und dann machst du das vielleicht weil du ja die an mit
dieser Anwendung arbeiten möchtest oder wie auch immer
oder daran entwickeln möchtest. Ja.
Und dann hast du aber eventuell das Problem.
Dass du halt wieder bei einer anderen Anwendung vielleicht
wieder ne andere Notversion haben musst.
So klar kann man sich jetzt hinstellen und sagen, ja gut,
Update doch immer so. Das ist natürlich auch das
Beste, aber die Praxiserfahrung zeigt, dass das nicht immer so
hundertprozentig so gut funktioniert, dass man sagt, sei
mal immer to date ne, warum auch immer, sicherlich kann man sich
hinstellen und sagen NÖ, aber das gibt es bei mir nicht.
OK, das ist auch sehr sehr gut, wenn es das nicht gibt.
Aber wenn du in dieser Situation bist und dann zwischen diesen
Node Versionen switchen musst, kann das durchaus anstrengend
sein und definitiv, das kann man halt super vermeiden, wenn man
zum Beispiel das Ganze in Container packt.
Also gerade wenn ich jetzt in so einer Welt wie in der
Webentwicklung unterwegs bin, weil du jetzt Node zum Beispiel
genannt hattest. Das ist ja auch sehr
schnelllebig und du kommst schnell an dem Punkt, dass
irgendwas nicht mehr unterstützt wird.
Neuere Version verlangt, dann hast du aber vielleicht noch
ältere Projekte, die auf älteren Versionen sitzen und genau dann
kommst du genau in diese Bredouille oder was du meintest
vorhin mit unserem mit unseren noch gar nicht so lang, ist noch
gar nicht so lange her, die Erfahrung.
Mit mit der App Entwicklung, dass wir da auch verschiedene
Frameworks genutzt hatten, die dann auch genau diese
Abhängigkeiten hatten. Und dann hat sich bei einem
sozusagen die Uhr schon weiter gedreht in der Version, der ist
schon ein bisschen neuer unterwegs gewesen als der andere
und dann hat es einfach gar nicht mehr zusammengepasst.
Und dann konfigurierst du a. Das läuft aber nicht mehr beim
anderen, der konfiguriert B und dann läuft es bei A nicht mehr
und so ist es ja im Prinzip ein Hin und her irgendwann und das
ist halt der riesen Vorteil. An Containern, dass du sagen
kannst, OK, diese Anwendung, die ich jetzt in diesen Container
packe, hat ihre eigene Umgebung und sie läuft unabhängig von
meiner Umgebung, und das ist das Entscheidende dabei.
Also ich kann dir das geben und egal wie es bei dir aussieht.
Es wird laufen, solange du halt quasi die die Runtime hast.
Ne, Wir haben ja gesagt, es muss natürlich auch ne
Laufzeitumgebung gehen, damit du es laufen lassen kannst.
Ne, das ist natürlich immer noch ne Sache, die brauchst du aber
das ist wirklich n sehr geringes Übel im Vergleich zu der Welt
wie es vorher war, wie wir es jetzt schon erklärt hatten und
dann kann ich dir das einfach geben und du kannst es laufen
lassen, dich muss ja nicht mal interessieren.
Also du solltest schon wissen was da drin läuft, ja klar.
Auch hinsichtlich Security und Isolation.
Da kommen wir auch noch drauf, das ist nämlich auch ein
wichtiger Punkt, aber einfach im Prinzip genau, im Prinzip kannst
du es aber, wenn du weißt, was es ist, es ausführen und nutzen
sozusagen und musst dir keine Gedanken um das in Leben so
gesehen machen. Aber das ist, finde ich, auch
ein ganz guter Punkt, den du nennst.
Wenn man jetzt das Ganze noch weiterdenken möchte.
Du hast natürlich auch einfach dann in diesem Moment genau die
Möglichkeit zu sagen, ich habe hier einen Container.
Den kann ich quasi überall dort, wo ich dann eben diese
entsprechende Runtime auch eben hab, kann ich das halt auch
laufen lassen, also auch genau die gleiche, ich sag mal eine
Instanz dieser klasse nenn ich das jetzt einfach mal so aus der
Objektorientierung, aber weißt du, dass du halt wirklich sagen
kannst? OK, das ist der Container und
egal wo ich diesen einen solchen Container sozusagen
instanziiere. Dort ist genau das auch wirklich
da. Also du weißt was du da hast.
Das ist wie eine Kopie dann am Ende und ohne irgendwelche
Konflikte mit irgendwelchen Versionen hier, Versionen da
oder was auch immer, sondern es funktioniert einfach.
Genau, lass uns mal, weil wir jetzt schon gesagt haben, also
das war jetzt schon so ein großer Vorteil, lass uns doch
mal gucken wofür warum das Ganze mit den Containern und mal jetzt
so wirklich die. Benefits noch mal klar
rausstellen, weil ich finde, das motiviert am meisten, sich mit
diesem Thema auseinanderzusetzen.
Wirklich mal zu verstehen oder sich vor Augen zu führen, was
bringt das ganze und wir hatten jetzt ja sage ich mal, ich nenne
es mal, es ist halt portable einfach, das heißt du kannst es
einfach auf jedes Zielsystem bringen, wie wir es gerade so
erklärt hatten, es ausführen und das läuft, das heißt so ein
Container. Kann auf jedem System, wo eine
Runtime existiert ne. Da können wir auch mal Beispiele
für Tools nennen oder ich mach es jetzt.
Also Docker ist glaub ich n Begriff den jeder jetzt
mittlerweile irgendwann mal gehört hat, wahrscheinlich oder
bald hören wird, weil Docker einfach so das bekannteste Tool
ist dafür, das heißt um dir jetzt das Beispiel mal zu
vollenden, du hast Docker installiert und kannst einfach
dann auch n Dockercontainer ausführen und du musst nicht
irgendwas noch bereitstellen, dafür sag ich mal genau.
Genau, und im Prinzip kannst du so sagen, wenn du so n Container
hast, kannst du den Lokal zum Beispiel dir bei dir laufen
lassen. Die Anwendung es testen oder
halt natürlich auch in Produktion überführen.
Es kann genauso auch dein Zielsystem im Production quasi
dann in diesem Container laufen, was auch wirklich ne gute
Practice ist. Ja genau ne, also nicht, dass du
jetzt wieder anfängst production mäßig zu sagen ne ich hab jetzt
n normales System und sorg dafür, dass da wieder alles
bereit liegt sozusagen. So nicht also.
Das ist ja, das ist ja das Schöne am Container, du kannst
es halt überall verwenden, das ist ja auch ne gute Practice,
gerade im Bereich von Def Ops zum Beispiel, dass man wirklich
sagt, alle Umgebungen, die ich habe, sind möglichst identisch
und damit kann, das kannst du natürlich mit Containern
schaffen, ne, und also wir haben ja auch ne def Ops Reihe in
unserem Podcast. Liebe Zürer lieber zürer, wenn
es dich interessiert, da gerne mal reinhören passt perfekt.
Rein das Thema Def Ops. Und.
Es gibt ja neben Docker auch noch andere Container Services.
Docker ist natürlich das bekannteste an der Stelle, es
gibt ja zum Beispiel noch pottman, hab ich persönlich
bisher noch nicht genutzt, muss ich sagen, also ich hab da auch
bisher sehr viel eigentlich. Das ist sogar der Vorgänger.
Ich weiß es nicht. Pottman ist mir aufgekommen, als
Docker irgendwann angefangen hat.
OK, also sag ich mal Geld zu verlangen für einen einen, wenn
du jetzt zum Beispiel ne ne Firma bist, die ne gewisse
Mitarbeiterzahl hat. Und da kam mir dann potman
unter. Vorher kannte ich tatsächlich,
also also ich kenne es auch nur als Alternative und es ist,
glaube ich auch immer noch ne kostenfreie ne, also das ist
wirklich dann noch das Argument für Potman.
Mein ich mein ich ja, aber wie gesagt korrigiert gefährliches
Unwissen. Genau.
Schreibt uns, wenn ihr es genauer wisst.
Aber was ich noch sagen wollte ist, wir können auf jeden Fall
ja mal n irgendwie ein Einstiegsbuch.
Über Container können wir ja mal in den Shownotes verlinken, da
könnt ihr uns dann auch unterstützen, wenn ihr Lust habt
und Lust habt dieses Buch zu kaufen und durchzulesen.
Bücher, gute Sache. Sehr guter Punkt, ja, komplett
unterschätzen. Aber wir gehen jetzt mal nicht
auf das Büchermedium ein. Ich find Bücher auch immer noch
klasse Podcast. Ist viel cooler, ja.
Genau. N anderer Punkt und auch mal auf
die Vorteile wieder jetzt zu kommen, den ich super wichtig
dabei finde und wir haben es auch immer jetzt schon so
mitschwingen lassen, ist halt die Skalierbarkeit ne also nicht
nur ich kann es portabel von A nach B bringen ne also es ist
easy, dass ich es auf allen Systemen ausbreiten kann.
Genau dieser Grund sorgt natürlich auch für ne super
geile Skalierbarkeit, ich kann es halt wirklich in die Maße
bringen und auch sämtliche Systeme sozusagen ausrollen.
Und das ist natürlich perfekt für beispielsweise
Microservices. Cloud Anwendung, also wirklich
das, was so die Hot topics auch momentan mit sind.
Ne, dafür ist es halt einfach wirklich essentiell, muss man so
sagen, es geht nicht ohne. Du kannst es ja auch so
vorstellen, wenn du jetzt zum Beispiel irgendwie du hast
angenommen, du hast irgendwie ne Anwendung, die willst du halt
auch, zum Beispiel auch in verschiedenen Regionen launchen
beziehungsweise hosten, dann kannst du halt sagen, OK, ich
hab halt meinen Source Code von dieser Anwendung und den kann
ich halt jetzt zum Beispiel in was weiß ich Amerika, Europa,
Asien, was auch immer, kann ich das halt eben hosten und und im
Endeffekt muss ich aber nur in Anführungsstrichen halt n
Container zusammenbasteln und den irgendwo hochfahren ne genau
und kann das dann in der entsprechenden Region halt eben
auch ausrollen. Genau.
Und da, wir hatten ja vorhin gesagt, es liegt ja auch
meistens ne Konfiguration mit dabei, das heißt, du kannst sie
ja auch noch dementsprechend konfigurieren.
Ja, wenn du jetzt zu unserem, da sag ich mal, weil du jetzt
meinst unterschiedliche Regionen wird es ja wahrscheinlich auch
unterschiedliche Konfigurationen geben, dann schon.
Durch irgendwelche Gesetze oder so.
Vielleicht ne. Genau, und das sind halt
einfach. Super Beispiele, ne, also auch
zum Beispiel Lastverteilung ne wenn du jetzt sagst ey OK ich
hab an einer Region ne totale Überlastung und ich kann jetzt
ganz schnell weitere Instanzen hochfahren um ne Lastverteilung
quasi vornehmen zu können, weil ich durch diese Container es
halt sehr schnell umsetzen kann und nicht anfangen mir erstmal
irgendwo n Server aufzusetzen zu gucken ob da alles installiert
ist et cetera ne. Finde ich aber auch n ganz guter
Punkt, der also wo ich direkt an was nächstes denken muss.
Von einem Vorteil ist natürlich, dass du nicht nur ne schnelle
Bereitstellung hast, sondern du kannst halt auch sehr gut n
Rollback machen, da hatten wir auch mal in einer Def Ops folge
drüber gesprochen, aber sage ich jetzt mal so Releases oder
release Strategien, dass du sagst OK, du hast jetzt
vielleicht n. Neuerungen ausgerollt in deiner
Anwendung merkst, die funktioniert nicht und sagst
halt einfach OK, dann fahr ich halt den alten Container zum
Beispiel hoch mit der alten Anwendung da drin mal so als
Beispiel ne du also. Das ist Mega vorderpunkt genau.
Also du kannst halt wirklich. Also Sekunden klingt n bisschen
übertrieben, aber du kannst wirklich sehr sehr schnell
diesen Fallback einfach wieder aktiv schalten.
Genau. Wirklich neuer Container
runterfahren, der alte Container wieder hochfahren und das dauert
nicht lange und dann ist die Anwendung wieder in der
vorherigen Version. Die funktionierte, wo jetzt
vielleicht der Fehler nicht drin ist, wieder am Start und das ist
halt auch n Riesenvorteil. Ne nimm noch mal dein Beispiel
mit Versionsupdates jetzt hast du deine Note Version in den
neuen in deiner neuen Software Version hochgepackt ne also
geupdatet hast die jetzt auf deinen auf deiner Umgebung
installiert und sagst ich muss jetzt aber die alte wieder
hochfahren. Oh, jetzt muss ich die aber
erstmal noch mal wieder bauen. Ah, geht ja gar nicht mehr,
nicht mehr kompatibel. Jetzt haben wir aber n
Riesenproblem und genau das ist halt der Grund ne das.
Ist halt einfach ne Zeit, also ne zeitfrage, dann am Ende ne
definitiv ansonsten ja Konsistenz hatten wir ja auf
jeden Fall schon gesagt, dieses typische wenn es bei mir läuft
läuft es überall, angenommen man hat dann halt eben die
entsprechende Runtime, aber dann funktioniert es natürlich und
was ich auf jeden Fall noch. Anbringen würde wäre auf jeden
Fall eine gewisse Effizienz oder Ressourcennutzung und also wir
können das ganze halt super schnell starten und es ist halt
ein geringer Overhead von diesem Container.
Man sagt ja auch immer Container sind sehr light, weit im
Verhältnis zu und da würde ich gerne auch mal direkt in den
Vergleich zu einer VM springen im Vergleich zu einer virtuellen
Maschine, weil zum Beispiel bei einem Container ist es ja so,
dass du im Endeffekt eigentlich nur also nur den Kernel des
zugrundeliegenden Betriebssystems brauchst.
Genau den teilst du dir. Genau, und das ist ja zum
Beispiel bei einer VM ganz anders.
Das heißt, bei einer VM hast du ja nicht nur deine
Abhängigkeiten, den Code und so weiter was du alles meintest,
sozusagen gekapselt wie bei einem Container, sondern auch
noch ein ganzes Betriebssystem dazu, also quasi aus der
Analogie jetzt die kleine Miniküche und.
Die du da mit Reinpackst. Ja, also man kann sich das also
wer noch nicht mit einer VM gearbeitet hat.
Man kann sich das halt wirklich so vorstellen, dass du einen PC
hast und darauf lässt du einen virtuellen PC laufen mit allem.
Also du hast halt wirklich dein dein eigenes Betriebssystem da
drauf. Ein Klassiker ist halt ja keine
Ahnung, hast einen Windows PC und willst eine Linux Instanz
also Distribution noch laufen lassen.
Ja, also wenn du es jetzt wirklich innerhalb von deinem
Windows als virtuelle Maschine laufen lassen willst.
Ich will jetzt nicht darauf eingehen, dass du natürlich auch
beide parallel installieren kannst.
Okay ja, wissen wir, aber wir gehen ja von VM s aus und dann
hast du halt wirklich dieses Betriebssystem in deiner VM
laufen und mit allen Ressourcen die dazu gehören.
Das heißt es ist auch, es verbraucht auch viel viel mehr
Speicher, du musst halt viel viel mehr Speicher bereitstellen
um eine VM. Zu installieren, zu
initialisieren und laufen zu lassen im Vergleich zum zum
Container. Richtig, das da sind wir dann
noch mal zurückgesprungen. Sozusagen noch mal kurz
sozusagen die Ressourcennutzung, ne, wie wir jetzt quasi, das war
ja der Bogen zur zur VM, was ist das, was die Container natürlich
deutlich ressourcensparender macht, also nicht nur die
Rechenleistung sozusagen, die du brauchst am Ende ne, sondern
auch den Speicherplatz wegen. Du brauchst ja doch ein
Betriebssystem. Auf jeden Fall guter Punkt.
Genau. Also das ist halt der riesen
Unterschied. Betriebssystem hast du ja
gesagt, du hast auf einer Seite dann halt in der VM ein eigenes
Betriebssystem und beim Container nutzt du quasi dein
Host System, den Kernel davon genau anderer Punkt Isolation,
weil ich ja auch vorhin meinte du solltest schon wissen was du
da ausführst. Nicht einfach irgendein Docker
Container hochfahren, aber da ist das.
Sag ich mal Isolation. Genau das richtige Stichwort,
und zwar in einem Container. Hast du eine Prozessisolation,
das heißt, was da drin läuft, läuft auch isoliert und betrifft
nicht dein sag ich mal den äußeren Ring von deinem System.
Man kann sich das so vorstellen, du startest diesen, diesen
Container, diesen Prozess und was da drin passiert bleibt da
drin. Also es gibt dir halt schon sag
ich mal schon nen hohen Schutz. Der Unterschied ist aber, wenn
wir jetzt davon ausgehen, bei einer VM und du hast ein eigenes
Betriebssystem laufen, da hast du natürlich noch eine viel
höhere Isolation, da kannst du halt wirklich sagen, ich bin
jetzt in meiner ganz eigenen Welt, ich teile mir nichts, es
ist meine Welt und ich habe eigentlich so die höchste
Isolation, die man sich dann, die man so erreichen kann, also
da muss man schon sagen, die ist noch mal höher als bei einem
Container an sich. Ja gut, du hast ja meistens
immer noch irgendwo logischerweise vor und Nachteile
dann ne, das ist auf jeden Fall n Vorteil von der VM.
Ja ja. Da muss man ja fair sein.
Genau, definitiv, definitiv aber ne.
Es geht ja mal n bisschen, dann meistens darum so welchen
Anwendungsfall braucht man denn ne gerade wenn du jetzt zum
Beispiel wirklich, dass die die Vorteile nutzen willst oder
brauchst, die wir ja vorher besprochen haben, ist natürlich
wieder n Container ne super Sache.
Genau, du hast ne. Allein die Ressourcennutzung ist
halt ein riesen Nachteil einer VM und wie wir meinten so beim
Micro Services Cloud Anwendung, da brauchst du halt nicht dein
eigenes Betriebssystem hinter jeder Anwendung dann da wirst du
ja wird dir das Wasser bis zum Hals stehen in der Ressourcen
Nutzung wenn du halt jedes Mal so viel brauchst um ein Docker
Container hochzufahren sage ich mal.
Man muss trotzdem auch noch mal sagen, auch wenn der die
Isolation oder der Schutz geringer ist, ist ja trotzdem
hoch. Ne.
Also du hast natürlich immer die Möglichkeit irgendwie noch nach
außen zu kommunizieren, aber ja OK, trotzdem sag ich mal wenn
was schief geht in deinem Container kannst du ihn
jederzeit runterfahren, löschen, das ist schnell weg damit weißt
du alles, alles läuft halt in seinem eigenen Prozess, ja.
Das stimmt. Aber selbst wenn du ihn
runterfährst, kannst du ihn schnell wieder hochfahren.
Super Sache, ja genau, aber doch nicht so schlimm.
Und wieder starten, wenn man sich jetzt die Portabilität
anguckt, haben wir gesagt, die ist beim Docker, beim Docker sag
ich schon, siehst du, das ist so, das ist so im Kopf ne, wenn
man das mal Docker Container sagt Nein, bei Containern
allgemein ist die ja sehr hoch, haben wir ja ausführlich
besprochen und ist quasi nur an ne Runtime geknüpft, du musst
sie halt irgendwie starten können.
Bei einer VM sieht das schon wieder ein bisschen anders aus,
weil da hast du halt die Bindung zu dem.
Ja, ich sag mal hyperweise, also zu deinem System, auf dem du die
VM laufen lässt und das heißt dein System muss zum Beispiel
erstmal unterstützen, dass du diese virtuelle Maschine laufen
lassen kannst sozusagen. Also da gibt es halt schon
Abhängigkeiten dann. Ja, fällt.
Fällt dir noch was ein? Dann theoretisch ganz kurz noch
zu dem letzten Punkt. Du hast ne ne kleine
Abhängigkeit, hast du ja auf jeden Fall, auch bei Docker
logischerweise, weil du brauchst ja wie gesagt irgendwie die
Docker bei Docker ja, also die Docker Runtime, wenn du Docker
verwendest, ja du. Brauchst halt ne Runtime um den
Container laufen zu lassen für den Container die Runtime, je
nachdem von was du welchen Container kriegst.
Also eine Kleinigkeiten gibt es ja immer, aber es liegt ja auch
einfach dem zugrunde, weil du lässt ja auf einem System etwas
laufen, also irgendwie muss es ja lauffähig werden und da ist
ja bei beiden Sachen irgendwas was du brauchst auf jeden Fall.
Genau. Ja, du hast.
Logischerweise hatten wir schon angesprochen, natürlich die den
Speicherverbrauch, der ist bei einer VM logischerweise deutlich
höher, weil es halt eben ein eigenes Betriebssystem
mitbringen muss. Und das hast du halt bei einem
Container nicht. Das braucht halt wie gesagt
nicht ein ganzes Betriebssystem, sondern greift nur auf den
Kernel vom zugrundeliegenden Betriebssystem zu, um das ganz
kurz noch mal zu sagen, falls jetzt irgendjemand Kernel, ja
was ist der Kernel, das ist jetzt nicht irgendwie hier der
Kernel, sondern das ist quasi. Eigentlich, so das Gehirn vom
Betriebssystem, was dafür sorgt, dass sozusagen, das ist die
Brücke zwischen der Software und der Hardware, von so einem
Gerät. Und genau das wird sozusagen
dann geteilt am Ende beim Container und eigentlich ist es
nur das, was man braucht, was natürlich eine schöne Sache ist,
eine Sache, um mal ganz kurz einen kleinen Exkurs zu machen.
Ich hatte mich mal gefragt, weil wir jetzt auch so oft über
Docker geredet haben, aber ich habe mich mal gefragt, wieso zum
Beispiel bei einem Mac? Oder beim Linux System da da
kannst du ausschließlich die Docker CI installieren.
Das kannst du aber bei Windows nicht und da brauchst du halt
richtig dieses an dieses Programm Docker Desktop ne und
also theoretisch könntest du das unter Windows auch machen, aber
rein praktisch ist es eher, also nicht so handhabbar.
Und da hab ich mich mal gefragt, wieso das eigentlich so ist,
weil ich mir auch irgendwann mal dachte, so, ja komm, ich kann
doch, also es ist länger her, aber da dachte ich mir so, ich
brauch eigentlich nur die Seal. Eigentlich brauch ja nicht das
ganze Kladderadatsch drumherum und da ist.
Kladderadatsch ist n wundervolles Wort.
Und das fand ich irgendwie ganz interessant.
Es geht nämlich darum, dass du ja wie wir, wie wie wir eben
gerade gesagt haben, nur nutzt, nur den Kernel des
zugrundeliegenden Betriebssystems, aber das.
Kannst du eigentlich bei Windows nicht machen, weil Docker und
Docker Container oder auch zum Beispiel von Pottman, die wollen
eigentlich einen Linux Kernel und den hast du ja irgendwo bei,
also bei Linux sowieso gegeben, bei Mac mehr oder weniger auch
gegeben, aber bei Windows nicht das heißt und das ist jetzt so
eine Kleine, wie sagt man so eine kleine Ausnahme bei Windows
Docker Desktop bringt quasi eine eigene kleine Mini VM mit.
Die dafür sorgt, dass man ein Linux Kernel hat.
Das heißt, eigentlich läuft Docker gar nicht mit dem Kernel
von Windows, sondern eigentlich nur mit dem Linux Kernel von der
kleinen Mini VM. Das Ganze nennt sich das, ist ja
also WSL 2, weiß nicht ob einem das was sagt, also ne das ist ja
im Endeffekt die das Windows Subsystem von Linux Nummer 2.
Aber das ist halt. Aber das ist halt das, was da
sozusagen passiert, weil die meisten Systeme, auch wenn wir
jetzt gerade so von Webanwendungen und Infrastruktur
und so weiter geredet haben, die Laufen ja auf, sag ich jetzt
mal, Linux System. Logischerweise ist ja auch
kostenfrei, Open Source und so weiter und demzufolge läuft
Docker oder auch pottman andere Container Services verlangen
halt n Linux Kernel ne und das ist halt.
Der Grund, warum zum Beispiel Windows da noch extra so n so n
ne Anwendung, sag ich jetzt mal mitbringt.
Und das. Tanzen wir aus der Reihe.
Aber. Das war mir, das war mir ne Zeit
lang gar nicht klar und ich fand es auf jeden Fall super
interessant. Ja, ist es, das hab ich mir so
auch noch keine Gedanken drüber gemacht, muss ich ehrlich sagen
wo ich unter Windows das auch wenig verwende.
Wahrscheinlich liegt es auch daran, ja, aber ja gut, sehr
guter Punkt, danke für die Info. Das ist auch ne gute Überleitung
und zwar was sind denn so Einsatzbereiche?
Du hast ja jetzt schon gesagt, OK es benötigt den Linux Kernel
und da ja viele Anwendungen und Server auf Linux laufen
funktioniert das Halt so. Wir haben gesagt OK Container,
moderne Microservices, Cloud Anwendungen auch im Bereich
Deployments Super verbreitet V. Ms haben v MS noch ne
Daseinsberechtigung und da kann man sagen.
Ja, auf jeden Fall. Auch gerade so bei so Legacy
Anwendungen. Also so veraltete Systeme, aber
nicht im negativen Sinne, sondern dass sie einfach schon
wirklich älter sind und oder halt auch so Multi OS Umgebung
ne wenn du jetzt sagst OK ich muss aber unbedingt brauch ich
da jetzt noch mal n was ich meinte ich hab n Windows PC und
da drin muss ich jetzt aber noch mal n Linux laufen lassen wie
auch immer dann die Konfiguration aussieht wir
hatten das zum Beispiel damals so ne kleine Story aus der
Vergangenheit ich hab. In einer meiner allerersten
Projekte hatten wir auch Windows Laptops und hab dann bin dann in
ein Projekt gekommen, wo aber unter Linux entwickelt wurde und
da hat man auch VM s verwendet. Das heißt ich habe eine VM
bekommen auf meinem Laptop und habe dann darin quasi meine
Entwicklungsumgebung gehabt. Also ich konnte theoretisch.
Und das habe ich auch teils so gemacht in meiner Windows
Umgebung. Coden ne, also an mein Teil des
Projekts arbeiten aber die Gesamtumgebung, die
Gesamtsoftware die zu kompilieren laufen zu lassen et
cetera war einfach innerhalb dieser VM, damit jeder quasi die
gleichen Bedingungen hatte um auch damals schon zu sagen, EY
das sind so unglaublich viele Abhängigkeit, es war wirklich n
großes Projekt mit sehr sehr vielen Teil Softwarelösungen.
Wenn ich das jetzt irgendwie hier mal im Gesamtheitlichen
laufen lassen möchte oder so das das das kriegt kriegen wir nicht
mehr eingerichtet. Auf irgendeinem Einzel PC.
Wenn jetzt einer neu anfängt, da wären wir nie fertig, so nach
dem Motto Ne und demnach gab es diese all Mighty VM sag ich mal
und da war alles voreingerichtet und das.
Ging also für damalige Verhältnisse muss man sagen, war
das eine smarte Lösung, einfach zu sagen okay, wir machen das so
und hier hast du die VM und du bist relativ schnell an Start
gekommen damit. Ja, das ist auch nicht.
Es war eine gute Lösung, aber also hast du gute Erfahrungen
mit VMS gemacht oder auch mal eine andere Frage noch direkt
hinterher. Hast du schon mit vielen vms
gearbeitet? Na also, in dem Projekt hab ich
ne längere Zeit da drauf gearbeitet und privat hatte ich
auch mal so ein 2 mal ne VM benötigt.
Aber ich würde jetzt nie nicht behaupten, dass ich super
erfahren damit bin. Nee, also.
Ich mein, im Endeffekt ist es ja die Bedienung von einer VM ist
sag ich jetzt nenn ich es mal. Bedienung ist natürlich sehr
einfach, weil du ja im Endeffekt eigentlich nur ne Art Rechner
auf dem Rechner bedienst, wie du es ja vorhin so schön gesagt
hast. Ja, aber es es.
Ist halt auch manchmal mit der Konfiguration nicht so einfach.
Gerade wenn du zum Beispiel sag ich mal nach außen kommunizieren
willst innerhalb deiner VM, das ist jetzt n triviales Beispiel,
aber das musst du halt erstmal überhaupt konfigurieren, ja,
weil die wie gesagt die VM ist isoliert, die hat keinen
Netzzugang sag ich mal ne von sich aus erstmal und wenn du
aber sagst ich brauch den aber in meiner VM und möchte jetzt
quasi über meinen. Meiner Umgebung ins Netz gehen
über mit innerhalb der VM sowas ne.
Also du hast halt schon konfigurationsaufwand
irgendwann, aber das hält sich in Grenzen, jedenfalls für die
Anwendungsfälle. Die ich hatte also bei mir, ich
hab echt selten mit einer VM gearbeitet und was mich
irgendwie immer echt genervt hat bei einer VM wenn ich mal damit
gearbeitet hab war. Dass ich das Gefühl hatte, dass
sie echt nicht, also eigentlich nie flüssig lief.
Das ist natürlich. Es mag daran liegen, ne, dass
ich halt einfach den das zugrundeliegende Betriebssystem
der Rechner ne, der hatte einfach nicht genug Power,
wahrscheinlich ne das um um halt eben auch noch sozusagen noch n
zusätzlichen Rechner, also n zusätzliches Betriebssystem noch
nebenbei laufen zu lassen, mag ja alles sein, aber trotzdem ich
dachte mir immer so wie nervig ist das mit einer VM zu
arbeiten. Also das war auf jeden Fall,
weiß ich nicht irgendwie ne, das ist halt genau diese
Ressourcennutzung, die wir angesprochen hatten.
Ne, du brauchst halt wirklich viele Ressourcen um das
vernünftig laufen zu lassen. Ja genau, auf jeden Fall.
Aber ich finde noch mal ganz kurz, um kurz diesen Vergleich
noch mal vielleicht fertig zu machen.
Eine wichtige Sache finde ich ja zum Beispiel bei einem, wenn
wenn du es vergleichst so ne VM und ne und und n Container.
Dann hast du ja bei einer VM wirklich auch zusätzlich
dadurch, dass du halt dieses Betriebssystem drauf hast und
weiter hast du ja wirklich die Möglichkeit, wieso ne ne Art UI
das diese virtuelle Machine wird virtuelle Machine die virtuelle
Maschine zu bedienen, ne bei einem Container ist es ja eher
so, dass du etwas tatsächlich virtuelles hast, was irgendwo
läuft. Also du kannst dich drauf
zuschalten mit einer Art Konsole, aber du wirst jetzt.
Nicht, sag ich jetzt mal mit einer Maus und Tastatur, dann da
rumklicken und so weiter ne, das ist ja wirklich sehr.
Ist nicht der Anwendungsfall. Dahinter genau das, das wollte
ich gerade sagen, es ist, es ist halt einfach n anderer
Anwendungsfall, auf jeden Fall, aber das ist ja vielleicht noch
mal interessant zu sagen, angenommen man würde jetzt zum
Beispiel denken, so OK, ich kann entweder das nehmen oder das
funktioniert beides gleich, aber das eine ist
ressourcenschonender sozusagen, das ist es ja dann im Endeffekt
nicht, ne ja. Ne.
Ja, also viel mehr habe ich jetzt in der Gegenüberstellung
auch nicht. Wir könnten noch mal bekannte
Tools noch mal so nennen zum Abschluss also wie gesagt,
Docker ist jetzt so oft gefallen, weil es einfach so im
Kopf verankert ist. Also Docker als Tool für
Container halt, ich würde auch sagen, es ist am meisten
verbreitet, das ist das bekannteste.
Wer sich damit auseinandersetzen möchte, es gibt auch das
Docahub, das kann man noch mal anmerken.
Hier an der Stelle, wo man sich auch fertige Images ziehen kann
und einfach auch mal so seine ersten Schritte in der Welt der
Container machen kann. Das git super viele.
Für Git ist das Docahub für Docahub.
Ja, genau, und. Wie gesagt, wir werden mal ein
Buch verlinken, noch so zum Einstieg ist auch immer nicht
schlecht, es gibt super viele. Tutorials auf jeden Fall.
Es lohnt sich extrem, sich mal mit Containern
auseinanderzusetzen. Pottman hatten wir schon genannt
als Alternative, das ist übrigens ein Punkt, da will ich
mal auf jeden Fall gerne mal mit einfach mal arbeiten, um das Mal
zu nutzen, weil ich habe es halt wie gesagt öfter mal gehört,
bisher eigentlich nur mit Docker gearbeitet, weil wie gesagt auch
gerade wenn Du zum zum im Arbeitskontext machst, dann hast
du ja oftmals so er dann. Docker, weil kennt ja jeder,
wird oft benutzt, passt schon so nach dem Motto Ne, aber da will
ich das will ich mir auch auf jeden Fall mal gerne angucken
okay okay dann nehme ich dich jetzt und unsere Zuhörerinnen
und Zuhörer bei Wort und du kannst ja berichten, wie es denn
ist. Bin ich gespannt was du
berichtest soll? Wir gucken uns das zusammen zum
Beispiel mal auf Twitch und unsere Livestreams an, habe ich
mich auch noch nicht mitgearbeitet und ich wette es
ist auch cool, also es wird auch seine Daseinsberechtigung haben.
Was mir noch einfällt ist, wir haben ja gesagt, jetzt kannst du
mehrere Container laufen lassen. Lastverteilung skalieren ist
sonst wie oft replizieren. Jetzt ist natürlich die Frage,
Wer ist noch Herr darüber das alles zu verwalten irgendwann
und da gibt es natürlich auch Tools für Cubanedes, zum
Beispiel um einfach so eine Orchestrierung von vielen
Containern hinzubekommen und die verwalten zu können, auch ein
super spannender Bereich. Liebe Zuhörer, lieber Zuhörer,
falls sich das interessiert, lasst es uns wissen, können wir
auch gerne mal eine Folge zu machen.
Das wäre quasi so die Advanced Topic Folge dann zum Container,
dass man das quasi diese ganze Orchestierung denn automatisiert
die Skalierung automatisiert so ein Load Balancing macht, das
ist auch ein unfassbar spannender Bereich am Ende.
Definitiv und auch super wichtig heutzutage.
Ne ja. Was wir noch machen könnten ist,
ich glaub wir haben noch n bisschen Zeit.
Ich hab grad mal auf die Uhr geguckt, wir werden doch nicht
rausgeschmissen hier. Der Manager guckt.
Schon aus mit euch. Ihr habt jetzt genug Podcasts
aufgenommen? Nein, okay zurück zum Thema, so
Best Practices vielleicht auch wenn es jetzt um Einstieg geht,
was worauf kann man achten? Das sind natürlich jetzt keine.
Goldenen Regeln, sondern ich würde mal sagen, so Erfahrungen,
die wir gemacht haben oder wie wir das handhaben, würde ich
jetzt noch ganz cool finden, so zum Ende, bevor wir noch mal so
ein kleines Fazit geben, Fabi, und da haue ich einfach mal 1
rein, weil wir jetzt schon sag schon Docker Hub genannt hatten.
Es gibt ja unfassbar viele Images, die du nehmen kannst für
deinen Container und diese riesen Auswahl reicht auch von.
Super schlanken Images, wo wirklich nur sehr sehr basic
Sachen vorbereitet sind. Bis hinzu hier hast du n Image
und kannst die Welt regieren, damit hast du übertrieben gesagt
ne, also weißt du wo dann einfach wo du einfach alles
hast. So und das ist natürlich macht
ja auch keinen Sinn, du musst dir ja überlegen was brauche
ich, was sind meine Dependencies und ich würde halt immer den Weg
gehen so schlank wie möglich. Weil nur das, was man noch nur
braucht. Rein Theorie.
Genau. Und selbst wenn ich dann später
merke, ich brauch noch was, dann kann ich das ja
hinzukonfigurieren es hindert mich ja niemand in meiner
Umgebung Sachen zu installieren, auch noch mal n Punkt den man
anmerken kann, ich kann ja auf einer ganz ganz basic Grundlage
anfangen und wenn ich dann merke hey ich brauch aber noch hier.
Note package irgendwas. Dann kann ich mir das ja immer
noch dazu installieren. Ja genau, ein Note ist ganz
interessant. Also ein gutes Stichwort.
Es gibt ja zum Beispiel von Note auch diverse Images, die du dir
bei Docker Hub, was du ja schon gesagt hattest, dir ziehen
kannst, als Basis Image zum Beispiel jetzt natürlich für
dein Docker Image und du kannst. Also es gibt dann zum Beispiel,
sagen wir mal Note 20 oder so ne als Image und es gibt noch dann
zum Beispiel auch die alpine Version und die alpine Version
ist meistens deutlich lightwriter als dann zum
Beispiel guter Punkt. Ja, also so als als kleines
Beispiel dafür was du meinst, ne, also da hast du dann zwar es
ist entschlackt, da quasi das ganze, es ist weniger drin, aber
es ist meistens dann oder muss man dann vielleicht noch mal
genau nachgucken was da drin ist und ob einem da nicht vielleicht
doch was fehlt, aber da kann man halt dann sagen OK.
Angenommen das reicht, dann nimmt man halt lieber.
Das ist halt schneller, braucht dann noch weniger Ressourcen und
so weiter genau und ein zweiter Punkt, der mir noch so einfällt
ist, weil wir auch so über Cicd gesprochen haben.
Automatisierung ist natürlich halt auch Container, wirklich
sage ich mal im kleineren Stil, oder was heißt kleinerer Stil?
Feingranulat zu verwenden. Vielleicht formuliere ich es mal
so, also es macht jetzt auch keinen Sinn zu sagen, ich mache
mir jetzt einen riesen Container und da ist alles drin, sondern
dass man sich wirklich mal überlegt, sich das ganze
sozusagen zu Kapseln und dann einzelne Container für die
einzelnen Anwendungen laufen zu lassen.
Ja, so. So also, dass man halt auch
wirklich diesen Grundgedanken von Anfang an trägt, sage ich
mal so. Ja, auf jeden Fall.
Und was auch. Also was ich oftmals mitgekriegt
habe ist, wenn du zum Beispiel, sagen wir mal, du hast eine
Anwendung und dann wird gerne mal immer alles sozusagen beim
Erstellen von dem Image, wenn du jetzt sagst okay ich ne wie wir
vorhin gesagt haben, du brauchst irgendwie ein Basis Image,
meistens wahrscheinlich, du willst da noch irgendwie deinen
Code reinkriegen und dann wird auch gerne mal dann einfach der
gesamte Code einfach rein kopiert, so ohne dass man sich
das vielleicht noch mal ein bisschen genauer anguckt.
Also. Beispielsweise sowas wie es
bringt ja nichts, wenn du Abhängigkeiten die die du auch
gar nicht einchecken würdest, in dein Repository mit zu kopieren,
weil die kannst du ja da drin aufbauen.
Also wieso alte Abhängigkeiten, die vielleicht noch, ich sag mal
blöd gesagt von gestern sind, die brauchst du ja nicht heute
in deinem Container habe ich schon erlebt, ist wahrscheinlich
auch no brainer, aber wollte ich trotzdem einfach noch mal.
Sagen. Geht ja auch in die Richtung
noch zu dem zweiten Punkt, also dass man sich das halt auch
wirklich überlegt, dann bin ich ganz bei dir, weil es ist halt
leicht zu sagen, Ey komm von der Route alles rein, so nach dem
Motto ist aber nicht immer der die Best Practice dahinter.
Ja super spannendes Thema, ich würd noch n kleines Fazit mit
dir geben wollen Fabi wenn du Bock hast hast du noch hast du
noch kurz? Warte ja doch, ich.
Muss gleich schaffen, OK. Also ich fang mal an, also was
sind Container noch mal zusammengefasst?
N Container ist im Prinzip die virtuelle Umgebung, die Software
mit allen Abhängigkeiten bündelt und quasi ne ne Funktionalität
bereitstellt. Mal ganz einfach gesagt, das
heißt ich hab ne Softwarelösung da drin die und ich es kommt
alles mit um das laufen zu lassen.
Und ich weiß nicht, ob das jetzt vielleicht rausgekommen ist.
Ich, ich versuch da gerade noch mal die Folge live Revue zu
passieren. Man kann sich das ja selbst
zusammenbauen, man sagt, ich nehm das mit rein, ich nehm das
mit rein, ich nehm das mit rein, ne man ist ja sozusagen selbst
in der Lage zu sagen wieso n kleinen Lego Baukasten, dass du
alles dir reinpackst in diesen Container und sagst, OK, das ist
es jetzt und jetzt ab in die Presse sozusagen ne, also nicht
in die Müllpresse, sondern. Ab in den Papierkorb damit.
Genau. Genau, und das ermöglicht dann
halt auch diese Anwendung, unabhängig von der Umgebung
laufen zu lassen. Was jetzt so wirklich der der
der Riesen Benefit dahinter ist. Genau, und da hast du dann
natürlich einfach die Möglichkeit zu sagen, ey, ich
kann das. Portabilibil ich kann, ich weiß
nicht, wie man das Wort da einbringt, also es ist portabel,
du kannst es einfach von einem System aufs andere bringen und
du hast natürlich auch eine gute Skalierbarkeit, wie wir auch
meinten. Im Endeffekt kannst du sagen,
ey, ich lass jetzt meine Anwendung auf zig System einfach
mal laufen und kann die hochfahren ohne Probleme.
Genau dann haben wir uns noch angeguckt, weil sich
wahrscheinlich der eine oder andere dann denkt, so Hey, warte
mal, das klingt irgendwie so total wie eine virtuelle
Maschine. Was ist der Unterschied?
Haben wir das ja auch mal ein bisschen gegenüber gestellt, da
noch mal kurz zusammengefasst. Also Container Vorteil ist, du
teilst dir nur den Kernel mit deinem Host System, eine VM
braucht ein komplett eigenes Betriebssystem, Riesen
unterschied Anwendungsfälle würde ich sagen Container ideal
für moderne und skalierbare Softwarelösungen, Wir hatten ja
gesagt so Micro Services, Cloud, Architektur, Architektur und
Anwendung also ja es sind jetzt so Buzzwords, aber da wird es
halt auch wirklich eingesetzt. Und VMS, wo du halt vielleicht
mehr Isolation noch brauchst. Dass du wirklich, dass ich will,
jetzt komplett meine eigene Welt haben, einen eigenen Sandkasten
und oft bei traditionellen Anwendungen.
Ich meinte ja so Legacy Projekte oder Multi US Umgebung, da wird
das halt auch noch eingesetzt und hat auch auf jeden Fall
seine Daseinsberechtigung. Definitiv.
Ja, also im Endeffekt. Wie gesagt, ich war irgendwie
nie so richtig der Fan von VM nutze ich auch heute aktuell
nicht, bist auch kein Fan von Docker, Docker sag ich schon
Container, es ist immer Docker, du weißt genau was ich meine,
Nein davon bin ich, davon bin ich wirklich Fan, aber zum
Beispiel weil du gerade gesagt hast Multi US Umgebung, ich hab
irgendwie mal n dualboot dann. Präferiert, aber am Ende weiß
ich nicht am Ende. Muss man aber fairerweise sagen.
Unsere Systeme, die wir zum Beispiel im Studium hatten,
hätten VM auch wirklich. Also du hast ja gesagt, Deine
Erfahrung war sehr ruckelig und das lag auch daran.
Also ich sag mal so, mein Netbook hatte eh Probleme schon
Windows zu starten und deswegen hatte ich eh immer noch Linux
parallel. Drauf aber ich.
Ich find also um das Ganze noch mal zu, also für mich
zusammenzufassen aus meiner Sicht, ich finde.
Ein Betriebssystem pro Rechner ist einfach.
Das ist das das Beste, also alles andere sind nur so
Zwischenlösungen die so na. Na, ich weiß nicht.
Also lieber 5 Laptops sagst du oder was?
5 Laptops und 5 verschiedene Betriebssysteme.
Genau. Ach ja, aber weißt du, ich
überlege gerade, wir sollten mal wieder die Netbooks rausholen.
Hast du deins noch von früher? Ja, ich glaube, da läuft aber
nicht mal Windows 10 drauf. Also ich weiß nicht, ich hatte
da Windows 7 drauf und das war schon sehr langsam.
Ja, also lieber zuhören, lieber zuhören, falls du uns mal auf
Twitch damit coden sehen willst, lass es uns wissen und dann
kramen wir die Dinger noch mal raus.
Ansonsten fabi würd ich sagen, es hat mir mega Spaß gemacht, es
war ne sehr coole Folge, ich liebe das Thema, ich find es
auch super spannend und auch noch mal jetzt die Anmerkung,
lieber zuhören lieber zuhören, falls du mehr dazu wissen
möchtest, auch zum Beispiel Stichwort Orchestrierung.
Lass es uns wissen. Podcast Mail wie immer in den
Show Notes schreibt uns auch gerne ein Feedback zu der Folge
Feedback zu dem Podcast. Was können wir deiner Meinung
nach besser machen, was würdest du dir wünschen, auch vielleicht
Themenvorschläge? Lass es uns wissen, wir sind
super dankbar dafür. Ansonsten wie gesagt der Spenden
Link wie wir am Anfang erwähnt hatten, falls du uns
unterstützen müsstest. Vielen vielen Dank.
Link ist in den Show Notes. Empfiehlt gerne den Podcast
weiter, lass ne Bewertung da, das wird uns alles mega pushen.
Vielen vielen Dank dann auf jeden Fall dafür und ansonsten
ich mach's jetzt kurz die Abmoderation Fabi ich bin schon
wieder im Redefluss, hören wir uns alle nächste Woche wieder
ich wünsche euch allen ne gute Zeit bis dahin und bis dahin
Eure Coding Vadis gemeinsam besser.