Hallo Community, ich bin vor einiger Zeit auf http://www.docker.com gestoßen. Ich verstehe noch nicht ganz im Detail, wie Docker Container funktionieren, habe aber den Eindruck, dass sie ein sinnvolles Tool sein könnten, um z.B. zwischen verschiedenen Entwicklungsumgebungen hin und her zu schalten, die sonst wegen strikter Annahmen über ihren Verzeichnisbaum o.ä. nicht parallel installiert werden können. Was ich aber noch nicht verstehe, ist das Funktionsprinzip der Container. Ich kann das selbe Dockerfile sowohl unter Windows als auch uner verschiedenen Linuxversionen ausführen. Woher nehmen die Applikationen ihre gemeinsame Grundlage? Werden Systemaufrufe emuliert (wie es Wine macht), oder installiert Docker eine Virtuelle Maschine, die dann auf jedem Host dem Gast dasselbe System bietet? Mir ist das Verständnis dieser Grundlagen wichtig, um den Overhead abschätzen zu können, wenn ich 5-10 nahezu identische Docker-Apps installiere. Danke Daniel
Wenn ich meine rudimentären Docker-Kenntnisse mal herauskrame: Docker ähnelt im Prinzip mehr einer mehrlagigen chroot-Umgebung als einer virtuellen Maschine. Der Kernel wird nicht emuliert, sondern bleibt nativ. Es wird "nur" dafür gesorgt, dass die einzelnen Prozesse getrennte Dateisysteme und keine anderen Docker-Prozesse sehen. Daher kann man in einer Linux-Instanz auch keine Windows-Applikationen ausführen und umgekehrt. Es kann aber übergreifende Dockerfiles geben: Diese sagen nur, welche Docker-Images übereinandergelegt werden sollen, also z.B. "Basis-OS", "Mysql", "Apache", ... Wie diese Images aber im Detail aussehen, ist von Betriebssystem zu Betriebssystem unterschiedlich, und sie müssen auch zueinander passen.
Docker benötigt einen Linux Kernel. Unter Windows laufen Container in einer virtuellen Maschine.
Kleiner Nachtrag: Daniel schrieb: > zwischen verschiedenen Entwicklungsumgebungen hin und her zu > schalten, Mehrere GUI-Anwendungen (wie IDEs) über Docker zu virtualisieren ist nicht so ganz einfach. Üblicherweise kommt man eben nicht auf eine Konsole etc. wie bei "echten" Virtualisierungen. Was aber möglich ist, auf den Docker-Container über eine Netzwerkschnittstelle zuzugreifen. Hierüber kann man dann über X11 laufen lassen.
Achim H. schrieb: > Es kann aber übergreifende Dockerfiles geben: Diese sagen nur, welche > Docker-Images übereinandergelegt werden sollen, also z.B. "Basis-OS", > "Mysql", "Apache", ... Wie diese Images aber im Detail aussehen, ist von > Betriebssystem zu Betriebssystem unterschiedlich, und sie müssen auch > zueinander passen. Heißt dies, dass z.B. ein Basis-OS einer Docker-Installation unter Ubuntu nicht identisch ist mit dem Basis-OS einer Docker-Installation unter Fedora? Worin genau besteht eigentlich der Vorteil von Docker gegenüber z.B. LXC oder Virtualbox, wenn auch Docker jeweils ein komplettes OS benötigt? Kranzi schrieb: > Docker benötigt einen Linux Kernel. Unter Windows laufen Container in > einer virtuellen Maschine. Danke, das erklärt einiges meiner Verständnisperobleme. Daniel
Docker emuliert nicht Prozessor und Chipsatz. Dadurch soll es wohl wesentlich schneller sein. Stimmt wohl auch. Ich kann hier durchaus 10 Container laufen lassen.
Andreas R. schrieb: > Docker emuliert nicht Prozessor und Chipsatz. LXC und Virtualbox emulieren ebenfalls nicht Prozessor oder Chipsatz. Nur qemu emuliert andere Prozessoren. Andreas R. schrieb: > Ich kann hier durchaus 10 Container laufen lassen. Ich kann auch 10 LXC container oder 10 virtuelle Maschinen gelichzeitig laufen lassen. Benchmarks zeigen im Rahmen ihrer Schwankungen dieselbe Performance im Vergleich zu Docker. Also, was ist nun wirklich der Vorteil von Docker? Ist es lediglich ein Verwaltungstool und macht im Hintergrund dasselbe wie LXC? Daniel
Daniel schrieb: > Also, was ist nun wirklich der Vorteil von Docker? es braucht weniger Ressourcen, weil es einige dinge mit dem Hostsystem teil. ( ich denke nicht das jeder Docker sein eigens Netzwerk hat, das wird vom Hostsystem genutzt ). Aber den Hype um Docker und Co kann ich auch nicht nachvollziehen.
Daniel schrieb: > Andreas R. schrieb: >> Docker emuliert nicht Prozessor und Chipsatz. > > LXC und Virtualbox emulieren ebenfalls nicht Prozessor oder Chipsatz. > Nur qemu emuliert andere Prozessoren. Da frag ich mich doch wieso ich in Virtualbox nen Chipsatz in den VM-Einstellungen wählen kann... > > Andreas R. schrieb: >> Ich kann hier durchaus 10 Container laufen lassen. > > Ich kann auch 10 LXC container oder 10 virtuelle Maschinen gelichzeitig > laufen lassen. Benchmarks zeigen im Rahmen ihrer Schwankungen dieselbe > Performance im Vergleich zu Docker. Komische Benchmarks machst du wenn du zwischen LXC/Docker und Virtualbox keine Differenzen feststellst. > > Also, was ist nun wirklich der Vorteil von Docker? Ist es lediglich ein > Verwaltungstool und macht im Hintergrund dasselbe wie LXC? > > Daniel Virtualbox emuliert Hardware, Dadurch ist es Kompatibel zu vielen Betriebsystemen, aber auch Ressourcen hungriger, Es Braucht mehr CPU-Zeit, IO ist langsamer, ram ist fest einer vm zugewiesen. Docker nutzt LXC als Virtualisierungs-Technik. Dort gibt es also Tatsächlich keine Performance-Unterschiede. Der unterschied ist aber: LXC musst du dein Root-Dateisystem unterschieben, wenn du das Versionieren willst Versioniert du entweder das Ganze System, oder du schreibst dir Software die dir ein System baut. Oder du nimmst eben Docker, das macht genau das, zusätzlich kannst du deine Dateisysteme "Stapeln", du kannst also ein image bauen das dir z.B. ein Ubuntu installiert. Dein Zweites Image baut darauf auf und installiert dir nen Webserver.
Dirk D. schrieb: > Da frag ich mich doch wieso ich in Virtualbox nen Chipsatz in den > VM-Einstellungen wählen kann... Richtig. Chipsatzemulation: ja / Prozessoremulation: nein > Komische Benchmarks machst du wenn du zwischen LXC/Docker und Virtualbox > keine Differenzen feststellst. Meine "Komischen Benchmarks" zeigen mir, dass für meine Zwecke kein wesentlicher Unterschied in der Performance besteht. Dabei benchmarke ich natürlich nicht das Erstellen einer neuen VM und auch nicht die Bootdauer. Selbstverständlich könnte ich mir auch "Nichtkomische Benchmarks" ausdenken, die belegen, dass LXC schneller ist, aber damit würde ich mich selbst täuschen. > Virtualbox emuliert Hardware, Dadurch ist es Kompatibel zu vielen > Betriebsystemen, aber auch Ressourcen hungriger, > Es Braucht mehr CPU-Zeit, IO ist langsamer Ich sehe da <2% Unterschied in Flops, <1% Unterschied in Bandwidth, <0.01% Unterschied in Latency. Wer das gravierend findet, kann natürlich trotzdem Virtualbox verdammen. > Docker nutzt LXC als Virtualisierungs-Technik. Nicht ganz. Aber ähnliche Technik. > Dort gibt es also > Tatsächlich keine Performance-Unterschiede. > Der unterschied ist aber: LXC musst du dein Root-Dateisystem > unterschieben, wenn du das Versionieren willst Versioniert du entweder > das Ganze System, oder du schreibst dir Software die dir ein System > baut. > Oder du nimmst eben Docker, das macht genau das, zusätzlich kannst du > deine Dateisysteme "Stapeln", du kannst also ein image bauen das dir > z.B. ein Ubuntu installiert. > Dein Zweites Image baut darauf auf und installiert dir nen Webserver. Ok, also macht Docker genau das, was ich mir on top of LXC entwickelt habe, und ich brauche kein Docker. Danke Daniel
Daniel schrieb: > Dirk D. schrieb: >> Da frag ich mich doch wieso ich in Virtualbox nen Chipsatz in den >> VM-Einstellungen wählen kann... > > Richtig. Chipsatzemulation: ja / Prozessoremulation: nein Genau. > >> Komische Benchmarks machst du wenn du zwischen LXC/Docker und Virtualbox >> keine Differenzen feststellst. > > Meine "Komischen Benchmarks" zeigen mir, dass für meine Zwecke kein > wesentlicher Unterschied in der Performance besteht. Dabei benchmarke > ich natürlich nicht das Erstellen einer neuen VM und auch nicht die > Bootdauer. Selbstverständlich könnte ich mir auch "Nichtkomische > Benchmarks" ausdenken, die belegen, dass LXC schneller ist, aber damit > würde ich mich selbst täuschen. Das sind deine Zwecke. Wenn die Bootdauer und das blockieren von ungenutzem Arbeitsspeicher für dich keine Rolle Spielen ist das natürlich okay. > > >> Virtualbox emuliert Hardware, Dadurch ist es Kompatibel zu vielen >> Betriebsystemen, aber auch Ressourcen hungriger, > >> Es Braucht mehr CPU-Zeit, IO ist langsamer > Ich sehe da <2% Unterschied in Flops, <1% Unterschied in Bandwidth, > <0.01% Unterschied in Latency. Wer das gravierend findet, kann natürlich > trotzdem Virtualbox verdammen. Fahren deine Benchmarks die Hardware ans Maximum? Wenn nicht werten sie wehnigstens cpu-last aus? > > >> Docker nutzt LXC als Virtualisierungs-Technik. > > Nicht ganz. Aber ähnliche Technik. Naja, vor 0.9 wars ausschliesslich lxc, ab 0.9 gibts libcontainer was wahlweise lxc oder libvirt nutzt. Wenn du ne 1.9.1 auf nem Frischen Debian installierst bekommste nen Paket das lxc-docker heisst mit der Beschreibung: Description: Linux container runtime Docker complements LXC with a high-level API which operates at the process level. It runs unix processes with strong guarantees of isolation and repeatability across servers. Docker is a great building block for automating distributed systems: large-scale web deployments, database clusters, continuous deployment systems, private PaaS, service-oriented architectures, etc. Ich behaupte jetzt mal das Docker doch durchaus lxc benutzt. > >> Dort gibt es also >> Tatsächlich keine Performance-Unterschiede. >> Der unterschied ist aber: LXC musst du dein Root-Dateisystem >> unterschieben, wenn du das Versionieren willst Versioniert du entweder >> das Ganze System, oder du schreibst dir Software die dir ein System >> baut. >> Oder du nimmst eben Docker, das macht genau das, zusätzlich kannst du >> deine Dateisysteme "Stapeln", du kannst also ein image bauen das dir >> z.B. ein Ubuntu installiert. >> Dein Zweites Image baut darauf auf und installiert dir nen Webserver. > > Ok, also macht Docker genau das, was ich mir on top of LXC entwickelt > habe, und ich brauche kein Docker. Dem will ich gar nicht widersprechen, ich kenn dein Anwendungsfall ja nicht im Detail.
Docker ist hauptsächlich Pseudohype. Pseudo deshalb, weil der Hype nicht real aus der Masse kommt, sondern künstlich von ein paar Suits durch massive PR-Maßnahmen vorgeteuscht wird. Wird leider erst aufhören, wenn das Venture-Capital nicht mehr fliesst. Um "Docker" mal etwas zu relativieren: https://github.com/p8952/bocker Bocker - Docker implemented in around 100 lines of bash. ;-)
asdfasd schrieb: > Docker ist hauptsächlich Pseudohype. Pseudo deshalb, weil der Hype > nicht real aus der Masse kommt, sondern künstlich von ein paar Suits > durch massive PR-Maßnahmen vorgeteuscht wird. Wird leider erst > aufhören, wenn das Venture-Capital nicht mehr fliesst. > > Um "Docker" mal etwas zu relativieren: > > https://github.com/p8952/bocker > > Bocker - Docker implemented in around 100 lines of bash. > > ;-) Bocker, implementing a tiny bit of Docker in shell if your are willing to set up your system the right way your self :) Außerdem ist es nur der client. Ist so nen bisschen wie: Notepad++, a light weight Eclipse.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.