GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

Was ist Docker (und Linux-Container?)

Vor einiger Zeit, um die Veröffentlichung der Linux-Kernel-Version 3 herum, wurde das Konzept von Namespaces und Containerisierung durch ein Modul namens lxc (Linux-Container) eingeführt.

Die Idee hinter einem Container ähnelt der Idee einer virtuellen Maschine. Bei der Virtualisierung haben Sie beispielsweise einen Server (den „Host“), auf dem etwas wie KVM oder VMware ausgeführt wird. Die darunter laufenden Maschinen werden Gäste genannt. Sie sind vollständig eigenständige Computer, die auf dem Host ausgeführt werden.

Container bringen dieses Konzept auf die nächste Stufe. Container helfen insbesondere Entwicklern (aber auch Systemadministratoren), Anwendungen oder Dienste schnell bereitzustellen. Container sind sehr kleine Linux-Maschinen, die als normaler Linux-Prozess ausgeführt werden (im userspace ). Ein durchschnittlicher Linux-Server ist Gigabyte groß und hat einen Kernel voller praktischer Treiber für alle Arten von Hardware und so weiter. Ein Container hingegen ist nur wenige hundert Megabyte groß. Eine VM bootet in wenigen Minuten, ein Container startet, einschließlich seiner beabsichtigten Anwendung, in wenigen Sekunden oder weniger. Es läuft genauso, wie Sie es von einer normalen Linux-Anwendung erwarten würden – als Prozess, den Sie mit dem Befehl ps sehen können.

Das folgende Diagramm von den Leuten bei CoreOS zeigt die Beziehung zwischen Containern und dem Betriebssystem gut. Oben sehen Sie einen normalen Linux-Server, auf dem alle üblichen Dienste ausgeführt werden, die Sie sich vorstellen können, wie Java, der Nginx-Webserver usw. Es werden wahrscheinlich auch einige andere Anwendungen ausgeführt.

In Abbildung 2 sehen Sie ein Beispiel für ein Betriebssystem, das auf Containerisierung ausgerichtet ist. Es hat nur begrenzte, minimale Anwendungen, wie z. B. den SSH-Server, der ausgeführt wird. Alle anderen Anwendungen laufen jetzt in vollständig isolierten Containern.

Vergängliche Wesen

Container sind idealerweise für einen einzigen Zweck konzipiert:Stellen Sie sich vor, Sie haben eine Anwendung, die JBoss und PostgreSQL verwendet. Sie haben wahrscheinlich einen Container für JBoss- und PostgreSQL-Komponenten. Die beiden Container sind voneinander isoliert, können aber miteinander verbunden werden, sodass sie miteinander kommunizieren können. Container sind auch so konzipiert, dass sie kurzlebig sind:Sobald ihr Zweck erfüllt ist, blasen Sie sie weg, Sie können jederzeit einen anderen in Sekundenschnelle drehen. Das bedeutet auch, dass die in einem Container gespeicherten Daten  nicht sind hartnäckig. Wenn Sie möchten, dass Daten wie Datenbanken oder Websites erhalten bleiben, können Sie sie in einem exportierten Speichervolume auf dem Hostserver ablegen. In bewährter Sicherheitspraxis würden Sie Ihr Basisimage mit allen neuen Patches oder Sicherheitshärtungsprozeduren aktualisieren und dann Ihre Anwendung rollen. Danach würden Sie Ihren Container von letzter Woche zerstören und in der nächsten Woche den neuen, sichereren Container verwenden.

Container passen hervorragend zum gesamten SaaS-Modell (Software-as-a-Service-Modell) und ermöglichen es Entwicklern und Betriebsmitarbeitern außerdem, freundlicher zusammenzuarbeiten (lesen Sie DevOps-Art). Aber lassen Sie uns hier nicht vorgreifen, Tooling wird keine kulturellen Probleme lösen, das ist ein ganz anderes Thema für eine andere Website!

Docker

Docker gibt es schon seit einiger Zeit. Docker übernahm Linux, was lxc nicht konnte:Benutzerfreundlichkeit. Als Entwickler herausfanden, wie ermächtigend es war, einfach einen Docker-Container auf ihrem Laptop hochzufahren und sich sicher zu sein, dass er auf einem anderen Server genauso und mit größter Leichtigkeit funktioniert, wurde es schnell zu einem Kinderspiel.

Docker hat seine Kritiker, einige (wie das coreOS-Team) glauben, dass Docker nicht sicher genug ist und sie werden zu kommerzialisiert (deshalb haben sie rkt als Konkurrenten zu Docker gemacht), aber ob sie es lieben oder hassen, Docker hat eine große Fangemeinde, und das nicht nur in Unternehmen, die Sie erwarten würden, wie Amazon und Google.

Mehr lesen

Auf den folgenden Websites können Sie mehr über Containerisierung lesen:

LinuxContainers.org

Docker:Was ist Docker?

Amazon AWS:Was sind Container?

Rkt (ausgesprochen Rocket), von CoreOS


Docker
  1. Entmystifizierung von Namespaces und Containern in Linux

  2. Was ist Podman und wie installiere ich Podman unter Linux?

  3. Was ist der Unterschied zwischen LXC-, LXD- und Docker-Containern?

  4. Was ist der Unterschied zwischen einem Linux-Container und einem Image?

  5. So exportieren und importieren Sie Docker-Container

So installieren Sie WordPress auf Docker (Windows, macOS und Linux)

Was ist Docker Compose und wie wird es verwendet?

So installieren Sie Docker und Docker Compose unter Linux

So installieren Sie Docker unter Rocky Linux und AlmaLinux

Docker- und Linux-Container unter Windows, mit oder ohne virtuelle Hyper-V-Maschinen

Erkunden von ASP.NET Core mit Docker in Linux- und Windows-Containern