[Anfänger] Was ist Docker überhaupt? Leicht verständliche Erklärung aus den Grundlagen!

Einführung

Es ist etwas spät, aber ich habe Docker aus den Grundlagen gelernt, also werde ich es zusammenfassen. Die detaillierten Optionen aller Befehle werden nicht zusammengefasst. Der Zweck dieses Artikels ist es, ein Tool namens Docker kennenzulernen, das rudimentär (aber wichtig) ist.

Was ist Docker überhaupt?

Docker ist ein "Konstruktionswerkzeug für virtuelle Umgebungen".

Was ist eine virtuelle Umgebung?

Eine virtuelle Umgebung ist ein temporärer Raum (ein Ort, an dem etwas realisiert werden kann), der künstlich in einem Computer erstellt wird. Wenn Sie etwas mehr kauen, können Sie das, was Sie ursprünglich benötigen, physisch verschieben, als wäre es virtuell.

スクリーンショット 2020-11-15 18.17.42.png Siehe: Was ist eine virtuelle Maschine? Erläutern Sie die Grundkenntnisse und Funktionen von "Virtualisierung" und "virtueller Maschine", die Sie häufig hören.

In einer Windows-Umgebung kann beispielsweise eine virtuell erstellte Linux-Betriebssystemumgebung oder eine andere Windows-Betriebssystemumgebung als Beispiel für eine virtuelle Umgebung vorbereitet werden. Im Allgemeinen wird das Betriebssystem, das die Grundlage für die Erstellung einer virtuellen Umgebung bildet, als "Host-Betriebssystem" und das Betriebssystem in der virtuellen Umgebung als "Gast-Betriebssystem" bezeichnet. Durch das Erstellen einer virtuellen Umgebung ist es nicht mehr erforderlich, einen Personal Computer für Linux und einen Personal Computer für Windows physisch vorzubereiten, und es wird möglich, zentral mit einer Hardware zu verwalten. Es hat auch den Vorteil, dass der Speicher und die Festplattenkapazität flexibel angepasst werden können. Durch das Erstellen einer virtuellen Umgebung werden auch Hardwaregeräte eingespart.

Typ der virtuellen Maschine

Es gibt verschiedene Arten von virtuellen Maschinen. Ich werde kurz die Vor- und Nachteile der einzelnen erläutern.

① Hosttyp ② Hyper-Visier-Typ ③ Containertyp

image.png Siehe: Was ist eine virtuelle Umgebung? Erläuterung der Vor- und Nachteile, typische Software "VMware"

① Hosttyp

Dieser Typ installiert ein Host-Betriebssystem auf einem PC oder Server und installiert und erstellt Software zur Erstellung virtueller Umgebungen auf diesem Betriebssystem. Das Gastbetriebssystem ist über dem Hostbetriebssystem ausgerichtet.

-Vorteil: Sie können es sofort verwenden, indem Sie es auf einem vorhandenen Server installieren, und Sie können es einfach starten. -Nachteil: Das Host-Betriebssystem muss gestartet werden. Wenn die Hardware gestartet wird, kann es einige Zeit dauern, bis das Host-Betriebssystem gestartet ist.

② Hyper-Visier-Typ

Der Hypervisor-Typ ist ein Typ, der die Virtualisierung erstellt, indem die Virtualisierungssoftware "Hypervisor" direkt auf einer Hardware installiert wird. Da das Host-Betriebssystem nicht gestartet werden muss, kann es schneller als der Host-Betriebssystem-Typ gestartet werden.

-Vorteil: Da es kein Host-Betriebssystem gibt, können die meisten Ressourcen der virtuellen Umgebung zugewiesen werden. -Nachteil: Sie müssen neue Hardware kaufen, ohne vorhandene PCs und Server wiederzuverwenden. Beim Bauen müssen Sie auch auf den Kostenaspekt achten.

③ Containertyp

Auf dem Host-Betriebssystem wird eine Virtualisierungssoftware namens "Container Engine" installiert, eine Umgebung namens Container erstellt und Anwendungen ausgeführt. Container haben nicht das Konzept eines Gastbetriebssystems. Es wird vom Host-Betriebssystem als ein Prozess erkannt. Daher sind keine zusätzlichen Ressourcen erforderlich und es kann eine leichte Umgebung bereitgestellt werden. Wenn Sie es tatsächlich verwenden, können Sie die Anwendung in kurzer Zeit starten.

-Vorteile: Gute Ressourceneffizienz und hervorragende Kostenleistung. ・ Nachteil: Es gibt nur wenige Anbieter, die gebaut werden können, da es sich um eine neue Technologie handelt. Es fehlen praktische Management-Tools.

Was ist wieder Docker? ??

Wie oben erwähnt, ist Docker ein "Konstruktionswerkzeug für virtuelle Umgebungen". Unter anderem können Sie eine virtuelle Umgebung mit dem Namen "** container **" erstellen und in diesem Container Anwendungen, Middleware, Betriebssysteme usw. ausführen. Eine der Attraktionen des Containers ist, dass er extrem leicht ist und schnell gestartet und gestoppt werden kann. Mal sehen, wie Docker tatsächlich funktioniert.

Wie Docker funktioniert

Hier werden wir unser Verständnis der Funktionsweise von Docker vertiefen, basierend auf Begriffen, die Docker-Anfänger beachten sollten.

・ Docker-Engine ・ Docker-Container ・ Docker-Image

Was ist die Docker-Engine?

Die Docker-Engine kann als "Docker selbst" verstanden werden. Dies ist der Kern von Docker, der Docker-Images erstellt und Container startet. Diese Docker-Engine kann einfach verwendet werden, indem Docker auf dem Host-Betriebssystem (Windows, Mac, Linux) installiert wird. Nach der Installation scheint die Docker-Engine auf dem Host-Betriebssystem ausgeführt zu werden und jeder Container wird darauf ausgeführt.

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/623708/c6cdea87-5c94-5188-cbf6-b0112bcd0f1e.png ", width="500">

Siehe Bild: https://www.ogis-ri.co.jp/otc/hiroba/technical/docker/part1.html

Was ist ein Docker-Container?

Ein Docker-Container ist eine virtuelle Umgebung, die auf der Docker-Engine ausgeführt wird. Mit dem Docker-Container können Sie verschiedene Umgebungen erstellen, von Betriebssystemen wie CentOS und Ubuntu bis hin zu Middleware wie Nginx und MySQL und Anwendungen wie Rails und Wordpress. Diese Container haben die Funktion "** läuft mit dem Host-Betriebssystem-Kernel (Linux-Kernel) **"! Ein Linux-Kernel ist eine Kernsoftware, die die für ein Betriebssystem erforderlichen Grundfunktionen sammelt.

Die Frage hier ist: "** Wird Docker unter Windows und Mac ohne Linux gestartet? **". Die Antwort steht auf! Der Grund dafür ist, dass die virtuelle Linux-Maschine hinter dem Start von Docker ausgeführt wird, sodass jeder Container auch auf dieser virtuellen Maschine ausgeführt wird.

Außerdem ist diese virtuelle Maschine, Linux, nicht für jeden Container unabhängig, sondern es wird diejenige verwendet, die allen Containern gemeinsam ist. Sie spart also die Ressourcen (CPU und Speicher) der Host-Maschine. Dadurch ** wird der Container selbst leichter und vor allem der Grund, warum der Docker-Container schneller startet **.

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/623708/2c9da8b1-609f-20e5-6484-84624142df97.png ", width="500">

Referenz: https://kitsune.blog/docker-summary#Docker%25E3%2582%25B3%25E3%2583%25B3%25E3%2583%2586%25E3%2583%258A%25E3%2581%25A8%25E3%2581% 25AF

Was ist ein Docker-Image?

Ein Docker-Image ist wie ein ** Handbuch ** zum Erstellen eines Docker-Containers. Basierend auf diesem Docker-Image wird ein Container erstellt. Sie können ein neues Bild erstellen, indem Sie jedem Bild eine "Ebene" überlagern. Dies ist das "Basisbild", das das Originalbild ist!

Siehe Bild: https://dzone.com/articles/optimizing-spring-boot-application-for-docker

Zusammenfassung

Eine kurze Zusammenfassung von Docker und der Funktionsweise von Docker. Selbst wenn Sie die Umrisse von Docker verstehen können, wenn Sie keine Grundkenntnisse in Linux haben, bleiben Sie bei den Einstellungen der Docker-Umgebung hängen, daher möchte ich auch Linux studieren.

Recommended Posts

[Anfänger] Was ist Docker überhaupt? Leicht verständliche Erklärung aus den Grundlagen!
Was ist die Hauptmethode in Java?
Was ist CHECKSTYLE: OFF in der Java-Quelle? Checkstyle zu wissen von
Was ist JSP? ~ Lassen Sie uns die Grundlagen von JSP kennen !! ~
Was ist Docker?
Was ist ... (3 Punkte) in der Java-Quelle gefunden? Argument mit variabler Länge, von dem man wissen muss
Was ist die LocalDateTime-Klasse? [Java-Anfänger] -Datum und Zeitklasse-
Was ist die Darstellung von Domänenwissen im [DDD] -Modell?
[Zusammenfassung der technischen Bücher] Zusammenfassung der Lektüre "Lernen Sie Docker aus den Grundlagen"
[Verständnis in 3 Minuten] Was ist Ruby-Vererbung? Nur die wichtigsten Punkte werden leicht verständlich erklärt!
Warum brauchen Sie Bundle Exec
Mit CSS in die Mitte legen
Haben Sie aufgehört, über die Verwendung von Getter / Setter im DTO-Entwurfsmuster nachzudenken?
[Anfänger] Was ist Docker überhaupt? Leicht verständliche Erklärung aus den Grundlagen!
Die Geschichte des Lernens von Java in der ersten Programmierung
Wenn Sie sich im Klassennamen verlieren
Warum nehmen Sie Vue.js nicht in Docker's Laravel auf? !!
Docker-Überwachung - Erläuterung der Grundlagen der Grundlagen
Was ist die Zupfmethode?
Dies ist der erste Beitrag.
Was ist die BufferedReader-Klasse?
Wofür ist der Konstruktor?
[Java-Grundlagen] Was ist Klasse?
Was ist die Initialisierungsmethode?
Das Repository ... ist kein signierter Fehler im Docker Build Apt-Get Update
Was ich bei der Migration von der Spring Boot 1.4-Serie zur 2.0-Serie getan habe
Installieren Sie lsb_release über die Befehlszeile, wenn lsb_release in der Docker-Umgebung fehlschlägt
Was ist @Override oder @SuppressWarnings ("SleepWhileInLoop") vor der Funktion? ?? ??
Was ich bei der Migration von der Spring Boot 1.5-Serie zur 2.0-Serie getan habe