Erfahren Sie in zehn Minuten, wie Sie Microservices mit Docker bereitstellen

Erfahren Sie in zehn Minuten, wie Sie Microservices mit Docker bereitstellen

Seit seiner Veröffentlichung im Jahr 2013 wird Docker intensiv beobachtet und man geht davon aus, dass es das Potenzial hat, die Softwarebranche zu verändern.

Vielen Menschen ist jedoch nicht klar, was Docker ist, welche Probleme es löst und welche Vorteile es bietet. Heute erklären wir es ausführlich, damit Sie es verstehen. Außerdem bieten wir leicht verständliche Beispiele, um Ihnen beizubringen, wie Sie es für die tägliche Entwicklung und Bereitstellung von Microservices verwenden.

1. Einführung in Docker

Docker ist eine Open-Source-Container-Engine, mit deren Hilfe Anwendungen schneller bereitgestellt werden können. Docker isoliert die Anwendungs- und Infrastrukturebenen und verwaltet die Infrastruktur wie ein Programm. Durch die Verwendung von Docker können Anwendungen schneller verpackt, getestet und bereitgestellt werden und der Zyklus vom Schreiben bis zum Bereitstellen und Ausführen von Code verkürzt werden.

Die Vorteile von Docker sind folgende:

1. Vereinfachen Sie den Prozess

Mit Docker können Entwickler ihre Anwendungen und abhängigen Pakete in einen portablen Container packen und diesen dann auf jeder gängigen Linux-Maschine veröffentlichen, um eine Virtualisierung zu erreichen. Docker hat die Art und Weise der Virtualisierung verändert und ermöglicht es Entwicklern, ihre eigenen Ergebnisse zur Verwaltung direkt in Docker einzufügen. Komfort und Geschwindigkeit sind bereits die größten Vorteile von Docker. Aufgaben, die früher Tage oder sogar Wochen dauerten, können heute mit Docker-Containern in Sekunden erledigt werden.

2. Vermeiden Sie die Angst vor der Wahl

Wenn Sie Angst davor haben, Entscheidungen zu treffen, sind Sie ein erfahrener Patient. Docker hilft Ihnen beim Verpacken Ihrer Verflechtung! Beispielsweise enthalten Docker-Images die Betriebsumgebung und Konfiguration, sodass Docker die Bereitstellung mehrerer Anwendungsinstanzen vereinfachen kann. Beispielsweise können Webanwendungen, Backend-Anwendungen, Datenbankanwendungen, Big Data-Anwendungen wie Hadoop-Cluster, Nachrichtenwarteschlangen usw. alle zur Bereitstellung in ein Spiegelbild gepackt werden.

3. Geld sparen

Einerseits bedeutet der Beginn des Cloud-Computing-Zeitalters, dass Entwickler nicht länger teure Hardware konfigurieren müssen, um Ergebnisse zu erzielen. Docker hat die Denkweise geändert, dass hohe Leistung ihren Preis haben muss. Durch die Kombination von Docker und Cloud kann der Cloud-Speicherplatz umfassender genutzt werden. Es löst nicht nur das Problem der Hardwareverwaltung, sondern verändert auch die Art der Virtualisierung.

2. Docker-Architektur

Docker-Daemon

Der Docker-Daemon ist ein Hintergrundprozess, der auf dem Hostcomputer (DOCKER-HOST) ausgeführt wird. Die Kommunikation kann über den Docker-Client erfolgen.

Kunde

Der Docker-Client ist die Benutzeroberfläche von Docker, die Benutzerbefehle und Konfigurationsflags akzeptieren und mit dem Docker-Daemon kommunizieren kann. In der Abbildung handelt es sich bei „Docker Build“ und anderen um Docker-bezogene Befehle.

Bilder

Ein Docker-Image ist eine schreibgeschützte Vorlage, die Anweisungen zum Erstellen eines Docker-Containers enthält. Es ist ein bisschen wie eine Systeminstallations-CD. Sie können die Systeminstallations-CD verwenden, um das System zu installieren. Ebenso können Sie das Docker-Image verwenden, um das Programm im Docker-Image auszuführen.

Container

Ein Container ist eine ausführbare Instanz eines Images. Die Beziehung zwischen Bildern und Containern ähnelt in gewisser Weise der Beziehung zwischen Klassen und Objekten in der objektorientierten Programmierung. Container können über Docker-API oder CLI-Befehle gestartet, gestoppt, verschoben und gelöscht werden.

Registrierung

Docker Registry ist ein Dienst zur zentralen Speicherung und Verteilung von Images. Nachdem Sie das Docker-Image erstellt haben, können Sie es auf dem aktuellen Host ausführen. Wenn Sie dieses Image jedoch auf anderen Computern ausführen möchten, müssen Sie es manuell kopieren. Derzeit können Sie Docker Registry verwenden, um das manuelle Kopieren von Bildern zu vermeiden.

Ein Docker-Register kann mehrere Docker-Repositorys enthalten, jedes Repository kann mehrere Image-Tags enthalten und jedes Tag entspricht einem Docker-Image. Dies ähnelt etwas dem Warehouse von Maven. Wenn Docker Registry mit dem Warehouse von Maven verglichen wird, kann das Docker-Warehouse als Pfad eines JAR-Pakets und das Image-Tag als Versionsnummer des JAR-Pakets verstanden werden.

3. Docker-Installation

Docker ist ein kommerzielles Open-Source-Produkt mit zwei Versionen: Community Edition (CE) und Enterprise Edition (EE). Die Enterprise-Version umfasst einige kostenpflichtige Dienste, die von einzelnen Entwicklern im Allgemeinen nicht genutzt werden. Die folgende Einführung gilt für die Community-Version.

Informationen zur Installation von Docker CE finden Sie in der offiziellen Dokumentation. Nachfolgend sind die Installationsmethoden für verschiedene Betriebssysteme aufgeführt.

  • Mac
  • Windows
  • Ubuntu
  • Debian
  • CentOS
  • Fedora
  • Andere Linux-Distributionen

Hier nehmen wir CentOS als Beispiel:

1. Docker erfordert eine Kernelversion des CentOS-Systems, die höher als 3.10 ist. Überprüfen Sie die Voraussetzungen auf dieser Seite, um festzustellen, ob Ihre CentOS-Version Docker unterstützt.

Überprüfen Sie Ihre aktuelle Kernelversion mit dem Befehl uname -r

# uname -r

2. Melden Sie sich mit Root-Rechten bei CentOS an. Stellen Sie sicher, dass das Yum-Paket auf die neueste Version aktualisiert ist.

# yum -y aktualisieren

3. Deinstallieren Sie die alte Version (falls die alte Version installiert wurde)

# yum entferne Docker Docker-Common Docker-Selinux Docker-Engine

4. Installieren Sie die erforderlichen Softwarepakete. yum-util stellt die Funktion yum-config-manager bereit. Die anderen beiden sind Abhängigkeiten des Devicemapper-Treibers.

# yum install -y yum-utils device-mapper-persistent-data lvm2

5. Yum-Quelle einrichten

# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

6. Sie können alle Docker-Versionen in allen Repositorys anzeigen und eine bestimmte Version zur Installation auswählen

# yum-Liste docker-ce --showduplicates | sort -r

7. Docker installieren

# sudo yum install -y docker-ce #Da im Repo standardmäßig nur das stabile Repository aktiviert ist, wird hier die neuste stabile Version 18.03.1 installiert

8. Starten und beitreten des Bootvorgangs

# systemctl starte Docker

# systemctl Docker aktivieren

9. Überprüfen Sie, ob die Installation erfolgreich war (das Vorhandensein von Client- und Serviceteilen zeigt an, dass die Docker-Installation und der Start erfolgreich waren).

# Docker-Version

10. Docker deinstallieren

# yum -y Docker-Engine entfernen

4. Allgemeine Docker-Befehle

(I) .Mirror-bezogene Befehle

1. Suche nach Bildern

Mit dem Docker-Suchbefehl können Sie nach Images suchen, die im Docker Hub gespeichert sind (dies ist der offizielle von Docker bereitgestellte Ort zum Speichern aller Docker-Image-Software, ähnlich dem zentralen Lager von Maven). Nach der Ausführung dieses Befehls sucht Docker im Docker Hub nach Image-Repositorys, die das Schlüsselwort „Java“ enthalten.

# Docker-Suche Java

Die obige Liste enthält fünf Spalten mit folgenden Bedeutungen:

  • NAME: Der Name des Bild-Repositorys.
  • BESCHREIBUNG: Beschreibung des Bild-Repositorys.
  • STARS: Die Anzahl der Sammlungen des Spiegel-Repositorys, die die Popularität des Spiegel-Repositorys angibt, ähnlich wie die Sterne von GitHub0
  • OFFICAL: Gibt an, ob es sich um ein offizielles Repository handelt. Die in dieser Spalte mit [0K] gekennzeichneten Bilder werden vom offiziellen Projektteam der jeweiligen Software erstellt und gepflegt.
  • AUTOMATISIERT: Gibt an, ob es sich um ein automatisch erstelltes Image-Repository handelt.

Hinweis: Bei der Verwendung von Docker zum Suchen oder Herunterladen von Bildern kann es zu einer Zeitüberschreitung kommen. Daher müssen wir einen inländischen Bildbeschleuniger für Docker konfigurieren.

Wir können den Bildbeschleuniger von Alibaba Cloud verwenden, um uns bei Alibaba Cloud anzumelden (https://cr.console.aliyun.com/#/accelerator).

Sie können die Spiegelbeschleunigungsadresse wie folgt sehen:

# cd /etc/docker

Überprüfen Sie, ob daemon.json vorhanden ist. Dies ist die Standardkonfigurationsdatei von Docker.

Wenn nicht, erstellen Sie ein neues, wenn ja, ändern Sie es.

# vim daemon.json 
{
  "Registrierungsspiegel": ["https://m9r2r2uj.mirror.aliyuncs.com"]
}

Speichern, beenden und den Docker-Dienst neu starten

# Service-Docker neu starten

2. Laden Sie das Bild herunter

Verwenden Sie den Befehl „docker pull“, um das Image aus der Docker-Registrierung herunterzuladen. Nach der Ausführung des Befehls lädt Docker die neueste Version des Java-Images aus dem Java-Repository im Docker Hub herunter. Wenn Sie eine bestimmte Version herunterladen möchten, fügen Sie nach „Java“ einen Doppelpunkt hinzu, um die Version anzugeben, zum Beispiel: docker pull java:8

# Docker Pull Java:8

3. Bilder auflisten

Verwenden Sie den Befehl „Docker Images“, um die heruntergeladenen Images aufzulisten

# Docker-Bilder

Die obige Liste bedeutet Folgendes:

  • REPOSITORY: Der Name des Repository, zu dem das Image gehört.
  • TAG: Bild-Tag. Der Standardwert ist „latest“, was „das Neueste“ bedeutet.
  • BILD-ID: Bild-ID, die die eindeutige Kennung des Bildes angibt.
  • ERSTELLT: Die Bilderstellungszeit.
  • GRÖSSE: Bildgröße.

4. Löschen Sie das lokale Image

Verwenden Sie den Befehl docker rmi, um das angegebene Image zu löschen

# Docker RMI Java

(II) Containerbezogene Befehle

1. Erstellen und starten Sie einen Container

Verwenden Sie den folgenden Befehl „docker run <image name>“, um einen Container zu erstellen und zu starten. Dieser Befehl ist der am häufigsten verwendete Befehl und verfügt über viele Optionen. Einige häufig verwendete Optionen sind unten aufgeführt.

# docker run -d -p 91:80 nginx

Dadurch wird ein Nginx-Container gestartet. In diesem Beispiel werden docker run zwei Parameter mit den folgenden Bedeutungen hinzugefügt:

  • -d Im Hintergrund ausführen
  • -p Host-Port:Container-Port #Container-Port zum Host-Port öffnen

Besuchen Sie http://Docker-Host-IP:91/. Sie sehen die Hauptschnittstelle von nginx wie folgt:

Es ist zu beachten, dass beim Erstellen eines Containers mit dem Befehl „Docker Run“ zunächst geprüft wird, ob das angegebene Image lokal vorhanden ist. Wenn das Image mit diesem Namen lokal nicht vorhanden ist, lädt Docker das Image automatisch vom Docker Hub herunter und startet einen Docker-Container.

Der Befehl hat auch einen Netzwerkkonfigurationsparameter, wie unten gezeigt

  • Option --net: Gibt den Netzwerkmodus an. Diese Option hat die folgenden optionalen Parameter:
  • --net=bridge: Die Standardoption bedeutet, dass eine Verbindung zur Standardbrücke hergestellt wird.
  • --net=host: Der Container verwendet das Netzwerk des Hosts.
  • --net=container:NAME-oder-ID: Weist Docker an, die Netzwerkkonfiguration eines vorhandenen Containers für den neu erstellten Container zu verwenden.
  • --net=none: Konfigurieren Sie das Netzwerk dieses Containers nicht. Benutzer können die Netzwerkkonfiguration anpassen.

2. Container auflisten

Verwenden Sie den Befehl docker ps, um die laufenden Container aufzulisten

# Docker PS

Um alle Container (einschließlich der gestoppten) aufzulisten, verwenden Sie den Parameter -a. Die Liste enthält 7 Spalten, die Bedeutungen sind wie folgt

  • CONTAINER_ID: gibt die Container-ID an.
  • BILD: gibt den Bildnamen an.
  • BEFEHL: Gibt den Befehl an, der beim Starten des Containers ausgeführt werden soll.
  • ERSTELLT: Gibt den Erstellungszeitpunkt des Containers an.
  • STATUS: Zeigt den Laufstatus des Containers an. „UP“ bedeutet, dass es ausgeführt wird, und „Exited“ bedeutet, dass es gestoppt wurde.
  • PORTS: gibt die externe Portnummer des Containers an.
  • NAMEN: gibt den Containernamen an. Der Name wird standardmäßig automatisch von Docker generiert, Sie können ihn jedoch auch selbst mit der Option --name des Befehls „Docker Run“ angeben.

3. Stoppen Sie den Container

Verwenden Sie den Befehl „Docker Stop <Container-ID>“, um den Container zu stoppen.

# Docker-Stopp f0b1c8ab3633

f0b1c8ab3633 ist die Container-ID. Sie können auch Docker Stop verwenden, um den angegebenen Container zu stoppen.

4. Erzwingen Sie das Stoppen des Containers

Sie können den Befehl docker kill <container id> verwenden, um ein SIGKILL-Signal zu senden und den Container zwangsweise zu stoppen.

# Docker kill f0b1c8ab3633

5. Starten Sie einen gestoppten Container

Verwenden Sie den Befehl „Docker Run“, um einen Container zu erstellen und zu starten. Für einen gestoppten Container können Sie den Befehl docker start <container id> verwenden, um ihn zu starten

# Docker-Start f0b1c8ab3633

6. Alle Containerinformationen anzeigen

Verwenden Sie den Befehl docker inspect <container id>

# Docker-Inspektion f0b1c8ab3633

7. Containerprotokolle anzeigen

Verwenden Sie den Befehl docker container logs <container id>

# Docker-Container-Protokolle f0b1c8ab3633

8. Sehen Sie sich den Prozess im Container an

Verwenden Sie den Befehl docker top <container id>

# Docker-Top f0b1c8ab3633

9. Betreten Sie den Container

Verwenden Sie den Befehl docker container exec -it <Container-ID> /bin/bash, um einen laufenden Docker-Container aufzurufen. Wenn der Parameter -it nicht verwendet wird, wenn der Befehl „Docker Run“ den Container ausführt, muss dieser Befehl zum Aufrufen des Containers verwendet werden. Sobald Sie sich im Container befinden, können Sie Befehle in der Shell des Containers ausführen.

# Docker-Container exec -it f0b1c8ab3633 /bin/bash

10. Löschen Sie den Container

Verwenden Sie den Befehl docker rm, um den angegebenen Container zu löschen

# Docker rm f0b1c8ab3633

Mit diesem Befehl können nur gestoppte Container gelöscht werden. Um einen laufenden Container zu löschen, verwenden Sie den Parameter -f.

(III) Erstellen Sie Ihr eigenes Docker-Image

Erstellen Sie Ihr eigenes Docker-Image mit Dockerfile

Dockerfile ist eine Textdatei, die mehrere Anweisungen enthält, die die Details zum Erstellen eines Images beschreiben.

Schreiben wir zunächst das einfachste Dockerfile. Nehmen wir das im vorherigen Artikel heruntergeladene Nginx-Image als Beispiel und schreiben wir ein Dockerfile, um die Homepage des Nginx-Images zu ändern.

1. Erstellen Sie einen neuen Ordner /app, erstellen Sie eine neue Datei mit dem Namen Dockerfile im App-Verzeichnis und fügen Sie ihr den folgenden Inhalt hinzu:

VON nginx #Laden Sie das Docker-Image von ngxin aus dem lokalen Image-Repository herunter. RUN echo 'Dies ist QingFeng Nginx!!!' > /usr/share/nginx/html/index.html #Ändern Sie den Homepage-Inhalt des Docker-Image von ngxin

Das Docker-File ist sehr einfach und FORM und RUN sind beides Anweisungen des Docker-Files. Mit der FROM-Anweisung wird das Basisimage angegeben, und mit der RUN-Anweisung werden Befehle ausgeführt.

2. Führen Sie den folgenden Befehl im Pfad aus, in dem sich Dockerfile befindet, um unser eigenes ngxin-Image zu erstellen. Nach dem Erstellen können Sie mit dem Befehl „Docker Images“ überprüfen, ob das Image ngxin:tuling generiert wurde:

# Docker-Build -t nginx:qingfeng.

Darunter gibt -t den Image-Namen an und der Punkt (.) am Ende des Befehls gibt den Pfad an, in dem sich die Dockerfile-Datei befindet.

3. Führen Sie den folgenden Befehl aus, um einen Docker-Container mit diesem Image zu starten

# docker run -d -p 92:80 nginx:qingfeng

4. Besuchen Sie http://Docker-Host-IP:92/. Dort sehen Sie die in der folgenden Abbildung dargestellte Schnittstelle.

Das Schreiben von Dockerfile-Dateien umfasst außerdem die folgenden allgemeinen Anweisungen

Hinweis: Der RUN-Befehl wird während der Erstellungsphase der Image-Datei ausgeführt und die Ausführungsergebnisse werden in die Image-Datei gepackt; der CMD-Befehl wird nach dem Start des Containers ausgeführt. Darüber hinaus kann ein Dockerfile mehrere RUN-Befehle, aber nur einen CMD-Befehl enthalten.

Hinweis: Nach der Angabe des CMD-Befehls kann an den Befehl „Docker-Container ausführen“ kein Befehl angehängt werden (wie z. B. /bin/bash im vorherigen Befehl), da sonst der CMD-Befehl überschrieben wird.

(IV) Verwenden von Dockerfile zum Erstellen von Microservice-Images

Nehmen wir als Beispiel das Spring-Boot-Projekt ms-eureka-server (Quellcode am Ende). Dieses Projekt ist ein Spring Cloud Eureka Microservice-Projekt. Das Projekt kann in ein ausführbares JAR-Paket gepackt und über das Spring-Boot-Maven-Plugin ausgeführt werden, wie in der folgenden Abbildung dargestellt

Erstellen Sie das ausführbare JAR-Paket des Projekts in ein Docker-Image:

1. Laden Sie das JAR-Paket in das Verzeichnis /app/eureka des Linux-Servers hoch und erstellen Sie eine Datei mit dem Namen Dockerfile in dem Verzeichnis, in dem sich das JAR-Paket befindet.

2. Fügen Sie dem Dockerfile den folgenden Inhalt hinzu

# 基于哪個鏡像

Von Java:8

# 復制文件到容器

HINZUFÜGEN von microservice-eureka-server-0.0.1-SNAPSHOT.jar /app.jar

# 聲明需要暴露的端口

EXPOSE 8761 #Startup-Port des Microservices-Projektes

# 配置容器啟動后執行的命令

EINSTIEGSPUNKT ["java","-jar","/app.jar"]

3. Verwenden Sie den Befehl „Docker Build“, um das Image zu erstellen

# docker build -t microservice-eureka-server:0.0.1 .

# 格式: docker build -t 鏡像名稱:標簽Dockerfile的相對位置

Hier wird der Bildtag mit der Option -t angegeben. Nach der Ausführung dieses Befehls gibt das Terminal Folgendes aus

4. Starten Sie das Image und fügen Sie -d hinzu, um im Hintergrund zu starten

# docker run -p 8761:8761 microservice-eureka-server:0.0.1

5. Besuchen Sie http://Docker-Host-IP:8761/. Die Homepage des Microservice Eureka Server wird normal angezeigt.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Detailliertes Tutorial zum Erstellen eines ETCD-Clusters für Docker-Mikroservices
  • Ein Beispiel für die Verwendung von Dapr zur Vereinfachung von Microservices von Grund auf

<<:  MySQL sql_mode-Analyse und Einstellungserklärung

>>:  Das Lazy-Loading-Attributmuster in JavaScript verstehen

Artikel empfehlen

Detaillierte Erläuterung des einzeiligen Funktionscodes des Datumstyps in MySQL

Einzeilige Funktionen vom Datumstyp in MySQL: CUR...

RHEL7.5 MySQL 8.0.11 Installations-Tutorial

Dieser Artikel zeichnet das Installationstutorial...

20 Wegweiser auf dem Weg zum exzellenten UI (User Interface)-Designer

Einleitung: Der Interface-Designer Joshua Porter h...

Detaillierte Erklärung zu JavaScript Anti-Shake und Throttling

Inhaltsverzeichnis Entprellen Gaspedal Zusammenfa...

HTML-Tabellen-Tag-Tutorial (25): vertikales Ausrichtungsattribut VALIGN

In vertikaler Richtung können Sie die Zeilenausri...

MySQL-Daemon konnte nicht gestartet werden – Fehlerlösung

MySQL-Daemon konnte nicht gestartet werden – Fehl...

Die neueste Installations- und Konfigurationsmethode für MySQL-5.7.21

1. Entpacken Sie das heruntergeladene MySQL-Kompr...

Erste Erkundung gängiger Befehle für Docker-Anfänger

Bevor wir Docker offiziell verwenden, machen wir ...

Hinweise zu Fallstricken bei Vuex und Pinia in Vue3

Inhaltsverzeichnis einführen Installation und Ver...

Erläuterung der neuen Funktion von Hadoop 2.X, der Papierkorbfunktion

Durch Aktivieren der Papierkorbfunktion können Si...