Docker - Anwendungen und Systeme unter Linux virtualisieren / isolieren

Windows unter Linux, Linux unter Linux, VirtualBox, Qemu, Docker und Co
Administrator
Beiträge: 1098
Registriert: Sa 10. Jul 2021, 01:47
Wohnort: Graz

Has thanked: 73 times
Been thanked: 604 times

Docker - Anwendungen und Systeme unter Linux virtualisieren / isolieren

Beitrag von robertgoedl »

VMWare, VirtualBox und Qemu haben dieselbe Eigenschaft - sie benötigen Leistung von den Prozessoren. Einerseits benötigt schon die Software die Hardware virtualisiert Kraft, andererseits das darauf laufende Betriebssystem - im Grunde laufen hier dann zwei Betriebssysteme und die Software zur Virtualisierung.

In gewissen Fällen kann hier die Software Docker helfen - hier läuft im Grunde genommen kein zweites Betriebssystem. Der Gast, also das virtualisierte System nutzt nämlich den Kernel des real installierten Systems. Es hat natürlich auch Nachteile - da der Kernel des real installierten Systems genutzt wird lässt sich nur ein verwandtes System virtualisieren. Unter Linux kann man nur Linux-Systeme in Docker laufen lassen, unter Windows nur Windows.

Was kann man mit Docker anstellen?

Man kann Anwendungen vom restlichen System isolieren, so etwa einen Webserver mit Docker betreiben der vom restlichen System abgeschottet ist. Man kann andere Linux-Distributionen versuchen - so ist es beispielsweise möglich unter Debian openSUSE laufen zu lassen, ...

Docker installieren

Unter den meisten Linux-Distributionen nennt sich das Paket ganz einfach "docker", unter auf Debian basierenden Linux-Distributionen existiert schon ein gleichnamiges Paket - hier installieren Sie über die Paket-Verwaltung das Paket "docker.io".

Damit Docker dauerhaft läuft müssen Sie den automatischen Start aktivieren, dies gelingt am Terminal als Administrator mit dem Befehl:

Code: Alles auswählen

systemctl enable docker
Nach einem Neustart startet Docker automatisch mit dem System. Möchten Sie Docker nur hin und wieder nutzen starten Sie den Dienst manuell auf dem Terminal mit dem administrativen Befehl:

Code: Alles auswählen

systemctl start docker
Mit:

Code: Alles auswählen

systemctl stop docker
lässt er sich anschließend wieder beenden. Mit:

Code: Alles auswählen

systemctl status docker
lässt sich der aktuelle Status anzeigen - hier läuft Docker - "Active: active (running)":
docker.jpg
Nach Images suchen

Man muss nicht lange selbst an Images basteln, es finden sich bereits für viele Aufgaben vorgefertigte Images auf dem Docker-Server im Internet. Gleich einmal zu Beginn - Docker wird vom Administrator genutzt. Nun wollen wir zu Beginn auf dem Terminal suchen - hier etwa nach einer bestimmten Distribution:

Code: Alles auswählen

docker search debian
docker1.jpg
Als Ausgabe sehen Sie zu Beginn den Namen des Images, anschließend eine kurze Beschreibung und zuletzt eine Statusmeldung. Sie müssen jedoch nicht unbedingt eine Distribution wählen, es kann sich auch um eine Anwendung handeln, etwa:

Code: Alles auswählen

docker search apache2
Möchten Sie mehrere Begriffe der Suche übergeben setzen Sie alle Begriffe unter Anführungszeichen.
docker2.jpg
Sie müssen passende Images jedoch nicht unbedingt am Terminal suchen, Sie können dies auch auf der Webseite von Docker grafisch im Webbrowser tun https://hub.docker.com/search?q=&type=image:
docker3.jpg
Docker-Images herunterladen

Haben Sie ein passendes Image gefunden brauchen Sie für den Download nur dessen Namen. Im Beispiel einfach "debian" - der Download gelingt am Terminal mit dem Befehl:

Code: Alles auswählen

docker pull debian
In diesem Fall wird nur das Standard-System heruntergeladen, ohne jegliche Anwendungen (rund 60 MB).

Alle installierten Images anzeigen

Mit dem Befehl:

Code: Alles auswählen

docker images
lassen sich anschließend alle installierten Images anzeigen:
docker4.jpg
Docker-Images starten

Ein installiertes Image starten Sie anschließend indem Sie dessen Name angeben, am besten steigen Sie gleich darin ein. Hierzu nutzen Sie die Optionen "-t -i" und geben an dass Sie das Terminal starten wollen:

Code: Alles auswählen

docker run -t -i  debian /bin/bash
docker5.jpg
Sie landen also direkt im laufenden System auf dem Terminal. Alternativ starten Sie den Container mit der Option "-d" - in diesem Fall wartet das System im Hintergrund auf Eingaben:

Code: Alles auswählen

docker run -t -i -d debian
Nun können Sie sich auf einem anderen Terminal alle laufenden Container anzeigen lassen:

Code: Alles auswählen

docker ps
docker6.jpg
Mit dem Befehl:
innerhalb des laufenden Containers steigen Sie aus diesem aus und beenden diesen. Wie oben schon beschrieben starten Sie ein Docker-Image im Hintergrund mit dem Befehl:

Code: Alles auswählen

docker run -i -t -d debian
Dies bedeutet Sie müssen keine Eingaben machen - das System läuft und Sie können auf dem Terminal andere Aufgaben erledigen oder natürlich auch weitere Docker-Images starten. Nun können Sie sich mit:

Code: Alles auswählen

docker ps
die laufenden Docker-Images anzeigen lassen:
docker7.jpg
Wichtig ist hier nun die "CONTAINER ID", mit dieser ID können Sie das Image steuern und Befehle in das im Hintergrund laufende System abgeben, hierzu dient der Befehl "exec". Um etwa den Befehl "ls" in das Image mit der ID "40ae1d009763" abzugeben:

Code: Alles auswählen

docker exec 40ae1d009763 ls
Die Ausgabe des Befehls wird in diesem Fall am Terminal ausgegeben, ohne direkt in den laufenden Container zu wechseln. Möchten Sie den im Hintergrund laufenden Container stoppen genügt ein:

Code: Alles auswählen

docker stop 40ae1d009763
Arbeiten mit Docker-Images

Nun wissen wir wie wir Docker-Images installieren, solche starten und stoppen. Wir möchten darin natürlich auch arbeiten, in meinem Fall starte ich wieder mein Debian mit dem Terminal:

Code: Alles auswählen

docker run -i -t debian /bin/bash
Ich befinde mich nun auf dem Terminal im laufenden Docker-Container und kann darauf arbeiten - etwa das System aktualisieren, Software installieren, Dateien anlegen und solche bearbeiten - was auch immer. Wird der laufende Container beendet sind jedoch alle Änderungen verloren. Bei den heruntergeladenen Images handelt es sich um schreibgeschützte Images. Also muss man etwas anders arbeiten. Also beginnen wir von vorne. Wir starten einen Container wie oben:

Code: Alles auswählen

docker run -i -t debian /bin/bash
Wir beenden den Container einfach mittels:
Nun starten wir den Befehl:

Code: Alles auswählen

docker ps --all
docker8.jpg
Dieser Befehl zeigt uns nun nicht nur laufende Docker-Container, sondern auch solche die wir bereits wieder beendet haben - ganz hinten finden Sie in der Tabelle auch die Spalte "NAME" - dies ist eine freundliche Bezeichnung, mit der wir genau diesen Container wieder starten können - und in diesem Container können wir auch Änderungen vornehmen die erhalten bleiben. Im Bild oben sehen wir die Bezeichnung "friendly_mclaren" - wir können diesen Container also mit:

Code: Alles auswählen

docker start friendly_mclaren
starten:
docker9.jpg
Nun können wir mit:

Code: Alles auswählen

docker attach friendly_mclaren
in den laufenden Container wechseln. Nun könnte man etwa das System aktualisieren, weitere Software installieren und sonstige Änderungen im System vornehmen - diese bleiben erhalten. Mit:
kann man aus dem System aussteigen (dadurch wird dieser Container natürlich beendet), den Container wieder starten und die Änderungen bleiben erhalten.

Laufende Container lassen sich nun mit:

Code: Alles auswählen

docker ps
anzeigen, alle gestarteten Container (auch wenn diese nicht laufen) mit:

Code: Alles auswählen

docker ps --all
Container die nicht laufen lassen sich mit:

Code: Alles auswählen

docker rm CONTAINER-ID
löschen, ganze Images die Sie sich mit:

Code: Alles auswählen

docker images
anzeigen lassen, lassen sich mit:

Code: Alles auswählen

docker rmi Image-Name
löschen.

Man sieht also schon, um mit Docker zu arbeiten, sollte man zu Beginn ein wenig planen. Nehmen wir einmal an Sie möchten mit dem vorgefertigten Docker-Image "nginx" (der Webserver nginx) einen Webserver betreiben - hier ist das System bereit, der Webserver ist installiert. Das System muss jedoch freie Ports haben - der Webserver benötigt ohne HTTPS den Port "80" - ganz klar, wir müssen den Port aus dem Container auf das real installierte System aufschalten. Gelingt ganz einfach:

Code: Alles auswählen

-p Container-Port:Host-Port
In diesem Beispiel ganz einfach:

Code: Alles auswählen

docker run -p 80:80 nginx
Schon läuft der Container und Sie können mit "localhost" über einen Webserver auf die Seite zugreifen:
docker10.jpg
Mittels:

Code: Alles auswählen

docker ps --all
Sehen wir anschließend den Namen des Containers mit dem wir den Container mit:

Code: Alles auswählen

docker start NAME
wieder starten können. Möchte man sich den Server komplett selbst zusammen stellen, in diesem Fall einfach einen Webserver - etwa wieder mit dem Image "debian", startet man das Image wieder mit den später zu nutzenden Ports - also:

Code: Alles auswählen

docker run -p 80:80 debian
Sucht sich nun die ID oder den Namen und stoppt diesen mit:

Code: Alles auswählen

docker ps --all
docker stop NAME
Nun kann man den Container in dem man beständige Änderungen vornehmen kann und arbeitet darin:

Code: Alles auswählen

docker start NAME
docker attach NAME
Sie können einem Container natürlich auch selbst einen Namen geben - ist einfacher zu merken:

Code: Alles auswählen

docker run --name= NAME -p 80:80 debian
Windows lässt sich mit einem U-Boot vergleichen - mach ein Fenster auf und die Probleme beginnen ...
Beiträge: 250
Registriert: Fr 16. Jul 2021, 01:58
Wohnort: Schweiz

Has thanked: 303 times
Been thanked: 40 times

Re: Docker - Anwendungen und Systeme unter Linux virtualisieren / isolieren

Beitrag von Rocki »

Danke Robert, ich weiss, dieses Tutorial ist in Bearbeitung. Und ich habe auch noch nicht alles gelesen von dem, was schon da ist. Das Ganze macht mich aber sehr neugierig. Ich wüsste einfach gerne, wie es mit der Sicherheit steht. Und allenfalls, ob Appimage, Snap, Flatpak und Co. (falls es noch mehr Sogeartetes gibt) mit Docker verglichen werden können.
«Wer alles weiss, hat keine Ahnung.» – Horst Evers
Administrator
Beiträge: 112
Registriert: Sa 10. Jul 2021, 17:17
Wohnort: Kaarst

Has thanked: 20 times
Been thanked: 8 times

Re: Docker - Anwendungen und Systeme unter Linux virtualisieren / isolieren

Beitrag von Bommo »

Ich befasse mich gerade auch mit Docker, soweit es meine Zeit zulässt und der Computer nicht rumspinnt.

Auf YouTube gibt es ein deutschsprachiges Tutorial von heise.online, welches m.E. sehr gut erklärt, was es mit Docker auf sich hat.

Hier zu finden:

https://www.youtube.com/watch?v=MRwJq5DZlUg&t=16s

Es sollen 6 Teile sein, aber ich finde nur 5. Für den kleinen Überblick nicht schlecht und ergänzt prima den Beitrag von Robert.
Früher tanzten wir Wange an Wange, heute Bauch an Bauch. :shock:
Beiträge: 250
Registriert: Fr 16. Jul 2021, 01:58
Wohnort: Schweiz

Has thanked: 303 times
Been thanked: 40 times

Re: Docker - Anwendungen und Systeme unter Linux virtualisieren / isolieren

Beitrag von Rocki »

Danke, super Tipp. Beim Teil 5 stand in einem der Kommentare dieser Link.
https://www.youtube.com/watch?v=_14HxhqjQWU
Der führt wirklich zu Teil 6.
«Wer alles weiss, hat keine Ahnung.» – Horst Evers
Administrator
Beiträge: 112
Registriert: Sa 10. Jul 2021, 17:17
Wohnort: Kaarst

Has thanked: 20 times
Been thanked: 8 times

Re: Docker - Anwendungen und Systeme unter Linux virtualisieren / isolieren

Beitrag von Bommo »

Rocki hat geschrieben: Di 20. Jul 2021, 20:20 Danke, super Tipp. Beim Teil 5 stand in einem der Kommentare dieser Link.
https://www.youtube.com/watch?v=_14HxhqjQWU
Der führt wirklich zu Teil 6.
Prima, nun ist die Sammlung vollzählig. Danke!
Früher tanzten wir Wange an Wange, heute Bauch an Bauch. :shock:
Gesperrt Vorheriges ThemaNächstes Thema

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste