Analyse der Prinzipien und der Nutzung von Docker-Container-Datenvolumes

Analyse der Prinzipien und der Nutzung von Docker-Container-Datenvolumes

Was ist ein Containerdatenvolumen?

Wenn sich die Daten im Container befinden, gehen sie verloren, sobald der Container gelöscht wird!

Z. B.: Der MySQL-Container wurde gelöscht. Dies wird oft als Löschen der Datenbank und Weglaufen bezeichnet. Anforderungen: Daten können persistent gespeichert werden. Selbst wenn der Container sofort gelöscht wird, sind unsere Daten immer noch im Container. Wir können eine Technologie zum Teilen von Daten haben! Die vom Docker-Container generierten Daten werden mit dem lokalen Computer synchronisiert!

Das ist die Rolltechnik! Mounten Sie das Verzeichnis und mounten Sie das Verzeichnis unseres Containers auf Linux!

Zusammenfassung: Mithilfe der Volume-Technologie werden Datenpersistenz- und Synchronisierungsvorgänge erreicht. Daten können auch zwischen Containern geteilt werden.

Datenvolumes verwenden

Methode 1: Verwenden Sie den Befehl direkt zum Mounten von -v

# Befehl docker run -it -v Host-Verzeichnis: Container-Verzeichnis -p Host-Port: Container-Port # Test # Das Host-Home-Verzeichnis ist leer [root@bogon home] # ls
# Starten Sie das Contes-Image, um das Home des Hosts an das Home des Containers zu binden [root@bogon home]# docker run -v /home:/home/ -it centos 
[root@8dc073caf39c /]# cd home/
# Das Home-Verzeichnis des Containers ist leer [root@8dc073caf39c home]# ls
# Erstellen Sie die Datei test.java im Containerverzeichnis [root@8dc073caf39c home]# touch test.java
[root@8dc073caf39c Startseite]# ls
test.java
# Nach dem Wechsel in das Host-Home-Verzeichnis erschien die Datei test.java [root@8dc073caf39c home]# [root@bogon home]# ls
test.java
# Erstellen Sie die Datei test2.java im Home-Verzeichnis des Hosts [root@bogon home]# touch test2.java
[root@bogon-Startseite]# ls
test2.java test.java
[root@bogon home]# docker ps
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
8dc073caf39c centos "/bin/bash" vor 3 Minuten Up 3 Minuten focused_nobel
# Geben Sie den laufenden Container ein [root@bogon home]# docker exec -it 8dc073caf39c /bin/bash
# Wechseln Sie in das Home-Verzeichnis des Containers [root@8dc073caf39c /]# cd home/
# Die Datei test2.java wurde gefunden [root@8dc073caf39c home]# ls
test.java test2.java


# Containerinformationen über den Befehl „inspect“ anzeigen [root@bogon home]# docker inspect 8dc073caf39c
    "Reittiere": [
      {
        "Typ": "binden",
        "Quelle": "/home", # Host-Verzeichnis "Ziel": "/home", # Container-Verzeichnis "Modus": "",
        "RW": wahr,
        "Ausbreitung": "rprivate"
      }
    ],
## Fazit: Wenn wir -v zum Binden von Daten verwenden# 1. Wenn der Container stoppt, nimmt der Host Änderungen an den Daten vor und die Daten werden nach dem Start des Containers synchronisiert# 2. Wenn der Container gelöscht wird, sind die Daten im Verzeichnis auf dem Host immer noch vorhanden## Vorteile: Nachdem wir das Datenvolumen verwendet haben und die Konfigurationsdatei in Zukunft ändern, müssen wir sie nur lokal ändern und der Container wird automatisch synchronisiert

Installieren Sie MySQL

MySQL-Datenpersistenzproblem

					  					 # -e MYSQL_ROOT_PASSWORD=my-secret-pw Setzt das initiale Passwort auf my-secret-pw
# Offizieller Befehl: docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

# prüfen	
# Interpretation # -d im Hintergrund ausführen # -p 3306:3306 Bind-Port # -v /home/mysql/conf:/etc/mysql/conf.d Datenträger-Mount-Technologie binden MySQL-Konfigurationsdatei # -v /home/mysql/data:/var/lib/mysql Datenträger-Mount-Technologie binden MySQL-Daten # -e MYSQL_ROOT_PASSWORD=123456 Umgebungskonfiguration ---》Setzen Sie das Anfangskennwort von MySQL auf 123456
  # --name mysql0 Benennen Sie den Container mysql01
[root@bogon home]# docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql
6d75b6312f725de2c71709116af5755604ea60cd073f1daf3755c578c1e64f57

Benannte und anonyme Reittiere

#Anonymer Mount -v Containerpfad!
docker run -d -P --name nginx01 -v /etc/nginx nginx 
# Benannter Mount -v Volume-Name: Pfad im Container Docker Run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx


# Testen Sie die anonyme Einbindung	
[root@localhost-Test]# docker run -d -P --name nginx01 -v /etc/nginx nginx
214dab398d9997a730b970b6e3bb08fa7e39bbb0ca91ad59f6b3f235d8f1b9bc

# Alle Volumes anzeigen [root@localhost test]# Docker-Volume ls
TREIBERVOLUMENNAME	
local 2c22e1c50ff7330b815b692f8f71a1fca878209223846c95626f7efd9dc2a83b # Anonyme Einbindung # Test der benannten Einbindung # Über -v Datenträgername: Pfad im Container [root@localhost test] # docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx
a678d79886565601bf466ff41734cb5334bdaf9e881b9cbf11edb84e9d790251
# Alle Volumes anzeigen [root@localhost test]# Docker-Volume ls
TREIBERVOLUMENNAME
local 2c22e1c50ff7330b815b692f8f71a1fca878209223846c95626f7efd9dc2a83b # Anonymer Mount local juming-nginx # Benannter Mount # Informationen zu einem Datenvolumen anzeigen	
# Befehl Docker Volume Inspect Volume-Name # Alle Volumes in Docker-Containern befinden sich in /var/lib/docker/volumes/XXX/_data ohne angegebenes Verzeichnis
[root@localhost test]# Docker-Volume prüfen juming-nginx
[
  {
    "Erstellt am": "2020-08-13T09:18:34+08:00",
    "Treiber": "lokal",
    "Labels": null,
    "Einhängepunkt": "/var/lib/docker/volumes/juming-nginx/_data",
    "Name": "juming-nginx",
    "Optionen": null,
    "Geltungsbereich": "lokal"
  }
]
# Wir können eines unserer Volumes ganz einfach über die benannte Einbindung finden. In den meisten Fällen verwenden wir die benannte Einbindung. # So ermitteln Sie, ob es sich um eine benannte Einbindung, eine anonyme Einbindung oder eine Einbindung über einen angegebenen Pfad handelt!
# -v Containerpfad # anonyme Einbindung # -v Volumename: Containerpfad # benannte Einbindung # -v Hostpfad: Containerpfad # Einbindung über angegebenen Pfad

expandieren

# Lese- und Schreibberechtigungen ändern über -v Volumename: Pfad im Container: ro rw # ro--->Nur lesen Nur lesen # rw--->Lesen Schreiben Lesen und Schreiben docker run -d -P --name nginx01 -v juming-nginx:/etc/nginx:ro nginx
docker run -d -P --name nginx01 -v juming-nginx:/etc/nginx:ro nginx

Erste Schritte mit DockerFile

DockerFile ist die Build-Datei, die zum Erstellen des Docker-Images verwendet wird! Befehlsskript! Probieren Sie es zuerst aus!

[root@localhost docker-test-volume]# cat dockerfile 
FORM centos

VOLUMEN ["Volumen01", "Volumen02"]
CMD echo "-----Ende-----"
CMD /bin/bash

# Build# Befehl docker build -f Shell-Skriptdatei -t Image-Name: Versionsnummer [root@localhost docker-test-volume]# docker build -f /home/docker-test-volume/dockerfile1 -t centos:1.0 .
Senden des Build-Kontexts an den Docker-Daemon 2.048 kB
Schritt 1/4: VON centos
 ---> 0d120b6ccaa8
Schritt 2/4: VOLUME ["volume01", "volume02"]
 ---> Wird ausgeführt in 4e6de7bc2f15
Zwischenbehälter entfernen 4e6de7bc2f15
 ---> f9e48207902b
Schritt 3/4: CMD echo "-----end-----"
 ---> Läuft in b22adea363e5
Zwischenbehälter entfernen b22adea363e5
 ---> a7518e2e1c72
Schritt 4/4: CMD /bin/bash
 ---> Wird ausgeführt in ae1b746bef6b
Zwischenbehälter entfernen ae1b746bef6b
 ---> d840628c30a9
Erfolgreich erstellt d840628c30a9
Erfolgreich getaggt centos:1.0
# Sehen Sie sich das Bild an [root@localhost overlay2]# Docker-Bilder
REPOSITORY TAG BILD ID ERSTELLT GRÖSSE
centos 1.0 d840628c30a9 vor 12 Minuten 215 MB # Unser eigenes Image centos latest 0d120b6ccaa8 vor 2 Tagen 215 MB
# Starten Sie das von uns generierte Image [root@1af673cf9c88 /]# docker run -it d840628c30a9 /bin/bash
[root@1af673cf9c88 /]# ls -l
gesamt 0
lrwxrwxrwx. 1 root root 7 11. Mai 2019 bin -> usr/bin
drwxr-xr-x. 5 root root 360 13. Aug. 02:18 dev
drwxr-xr-x. 1 root root 66 13. Aug. 02:18 usw.
drwxr-xr-x. 2 root root 6 11. Mai 2019 Startseite
lrwxrwxrwx. 1 root root 7 11. Mai 2019 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 11. Mai 2019 lib64 -> usr/lib64
drwx------. 2 root root 6 Aug 9 21:40 verloren+gefunden
drwxr-xr-x. 2 root root 6 11. Mai 2019 Medien
drwxr-xr-x. 2 root root 6 11. Mai 2019 mnt
drwxr-xr-x. 2 root root 6 11. Mai 2019 opt
dr-xr-xr-x. 117 root root 0 13. August 02:18 proc
dr-xr-x---. 2 Wurzel Wurzel 162 9. Aug. 21:40 Wurzel
drwxr-xr-x. 11 root root 163 9. Aug. 21:40 ausführen
lrwxrwxrwx. 1 root root 8 11. Mai 2019 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 11. Mai 2019 srv
dr-xr-xr-x. 13 root root 0 11. August 09:58 sys
drwxrwxrwt. 7 root root 145 9. Aug. 21:40 tmp
drwxr-xr-x. 12 root root 144 9. Aug. 21:40 usr
drwxr-xr-x. 20 root root 262 9. Aug. 21:40 var
drwxr-xr-x. 2 root root 6 Aug 13 02:18 volume01 # Dies ist das Datenvolume-Verzeichnis, das automatisch gemountet wird, wenn wir das Image generieren drwxr-xr-x. 2 root root 6 Aug 13 02:18 volume02

# Dieses Volume muss über ein mit dem externen Verzeichnis synchronisiertes Verzeichnis verfügen! Lassen Sie uns Folgendes herausfinden: # 1. Fragen Sie die Containerinformationen basierend auf der Container-ID ab --》Informationen zum Datenvolumen		
	# Docker-Inspektion 1af673cf9c88
# 2. Suchen Sie den Datenträgernamen, der Volume01 entspricht, gemäß den Datenträgerinformationen # Docker Volume Inspection 8c3486526093c755785725111b4063cd93a5ba88f9c2ac09f45741a0f1d08fd3
# 3. Fragen Sie die Datenvolumeninformationen entsprechend dem Datenvolumennamen ab - „Suchen Sie das entsprechende Verzeichnis in Linux # docker volume inspect 8c3486526093c755785725111b4063cd93a5ba88f9c2ac09f45741a0f1d08fd3

# Erstellen Sie eine Datei im Container. Erstellen Sie die Datei test.java im Datenvolumen volume01 [root@1af673cf9c88 volume01]# touch test.java
[root@1af673cf9c88 volume01]# ls
test.java
# Beenden Sie den Container [root@1af673cf9c88 volume01]# exit
Ausfahrt
# Containerinformationen anzeigen [root@localhost overlay2]# docker inspect 1af673cf9c88
	# Suchen Sie den Namen, der dem gemounteten Volume volume01 entspricht, nämlich: 8c3486526093c755785725111b4063cd93a5ba88f9c2ac09f45741a0f1d08fd3
    "Reittiere": [
      {
        "Typ": "Volumen",
        "Name": "8c3486526093c755785725111b4063cd93a5ba88f9c2ac09f45741a0f1d08fd3",
        "Quelle": "/var/lib/docker/volumes/8c3486526093c755785725111b4063cd93a5ba88f9c2ac09f45741a0f1d08fd3/_data",
        "Ziel": "volume01",
        "Treiber": "lokal",
        "Modus": "",
        "RW": wahr,
        "Ausbreitung": ""
      },
      {
        "Typ": "Volumen",
        "Name": "046d0baa3cc0bc3540c5e7248808358371641bfba4e0bbd139c99fe851751da2",
        "Quelle": "/var/lib/docker/volumes/046d0baa3cc0bc3540c5e7248808358371641bfba4e0bbd139c99fe851751da2/_data",
        "Ziel": "volume02",
        "Treiber": "lokal",
        "Modus": "",
        "RW": wahr,
        "Ausbreitung": ""
      }
    ],
# Suchen Sie anhand des Datenträgernamens 8c3486526093c755785725111b4063cd93a5ba88f9c2ac09f45741a0f1d08fd3 den Datenträger im Linux-Speicherort [root@localhost overlay2]# docker volume inspect 8c3486526093c755785725111b4063cd93a5ba88f9c2ac09f45741a0f1d08fd3
[
  {
    "Erstellt am": "2020-08-13T10:27:12+08:00",
    "Treiber": "lokal",
    "Labels": null,
    "Einhängepunkt": "/var/lib/docker/volumes/8c3486526093c755785725111b4063cd93a5ba88f9c2ac09f45741a0f1d08fd3/_data",
    "Name": "8c3486526093c755785725111b4063cd93a5ba88f9c2ac09f45741a0f1d08fd3",
    "Optionen": null,
    "Geltungsbereich": "lokal"
  }
]
# Suchen Sie unsere Datei test.java im Verzeichnis /var/lib/docker/volumes/8c3486526093c755785725111b4063cd93a5ba88f9c2ac09f45741a0f1d08fd3/_data/ [root@localhost volumes]# cd /var/lib/docker/volumes/8c3486526093c755785725111b4063cd93a5ba88f9c2ac09f45741a0f1d08fd3/_data/
[root@localhost _data]# ls
test.java

Datenvolumencontainer

Mehrfache MySQL-Datensynchronisierung!

# Verwenden Sie --volumes-from Containername, um Daten zwischen Containern zu teilen. # Starten Sie ein Image mit dem Namen docker01
[root@localhost _data]# docker run -it --name docker01 centos:1.0 /bin/bash
[root@a85fbed0ebc9 /]# ls
bin dev etc home lib lib64 verloren+gefunden Medien mnt opt ​​proc root run sbin srv sys tmp usr var volume01 volume02
# Starten Sie dasselbe Image mit dem Namen docker02 und verknüpfen Sie es mit docker01. Zu diesem Zeitpunkt wird docker01 als Datenvolumencontainer bezeichnet [root@localhost _data]# docker run -it --name docker02 --volumes-from docker01 centos:1.0
[root@a89fb82eeeb5 /]# ls
bin dev etc home lib lib64 verloren+gefunden Medien mnt opt ​​proc root run sbin srv sys tmp usr var volume01 volume02
# Erstellen Sie test.txt im Verzeichnis volume01 des Containers docker02 
[root@a89fb82eeeb5 /]# cd volume01/
[root@a89fb82eeeb5 volume01]# ls
[root@a89fb82eeeb5 volume01]# touch test.txt 
[root@a89fb82eeeb5 volume01]# ls
test.txt
# Containerinformationen anzeigen [root@a89fb82eeeb5 volume01]# [root@localhost _data]# docker ps
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
a89fb82eeeb5 centos:1.0 "/bin/sh -c /bin/bash" Vor etwa einer Minute Up Vor etwa einer Minute docker02
a85fbed0ebc9 centos:1.0 "/bin/bash" vor 4 Minuten Up 4 Minuten docker01
# Geben Sie den Container mit dem Namen docker01 [root@localhost _data] ein# docker exec -it a85fbed0ebc9 /bin/bash
[root@a85fbed0ebc9 /]# ls
bin dev etc home lib lib64 verloren+gefunden Medien mnt opt ​​proc root run sbin srv sys tmp usr var volume01 volume02
# Wechseln Sie in das Verzeichnis volume01 des Containers [root@a85fbed0ebc9 /]# cd volume01/
# Habe die Datei test.txt gefunden [root@a85fbed0ebc9 volume01]# ls
test.txt
# Erstellen Sie test01.txt
[root@a85fbed0ebc9 volume01]# touch test01.txt
[root@a85fbed0ebc9 volume01]# ls
test.txt test01.txt
# Geben Sie den Container mit dem Namen docker02 [root@localhost _data] ein# docker exec -it a89fb82eeeb5 /bin/bash
[root@a89fb82eeeb5 /]# ls 
bin dev etc home lib lib64 verloren+gefunden Medien mnt opt ​​proc root run sbin srv sys tmp usr var volume01 volume02
[root@a89fb82eeeb5 /]# cd volume01/
# Die Datei test01.txt wurde gefunden [root@a89fb82eeeb5 volume01]# ls
test.txt test01.txt

# Starten Sie das gleiche Image mit dem Namen docker03 und verknüpfen Sie es mit docker01
[root@localhost _data]# docker run -it --name docker03 --volumes-from docker01 centos:1.0
# Wechseln Sie in das Verzeichnis volume01 und suchen Sie die Datei test.txt test01.txt [root@11d93f9bcd89 /]# cd volume01/
[root@11d93f9bcd89 volume01]# ls
test.txt test01.txt

#Testvorgang: 1. Führen Sie den Image-Container centos:1.0 mit dem Namen docker01 aus
# 2. Führen Sie den centos:1.0-Image-Container mit dem Namen docker02 aus und geben Sie Daten über --volumes-from docker01# an ihn weiter. 3. Führen Sie den centos:1.0-Image-Container mit dem Namen docker03 aus und geben Sie Daten über --volumes-from docker01# an ihn weiter. 4. Führen Sie den centos:1.0-Image-Container mit dem Namen docker04 aus und geben Sie Daten über --volumes-from docker03# an ihn weiter. 5. Führen Sie den centos-Image-Container mit dem Namen docker05 aus und geben Sie Daten über --volumes-from docker03# an ihn weiter. Nach dem Testen wurde Folgendes festgestellt:
# 1. Fügen Sie Dateien zum Verzeichnis volume01 eines beliebigen Containers hinzu, und die hinzugefügten Dateien werden zur Datenfreigabe im Verzeichnis der anderen vier Container angezeigt. # 2. Stoppen und löschen Sie den Container mit dem Namen docker01, und die Dateien im Verzeichnis volume01 der anderen vier Container sind weiterhin vorhanden. # 3. Stoppen und löschen Sie den Container mit dem Namen docker01 und fügen Sie Dateien zum Verzeichnis volume01 eines beliebigen der anderen vier Container hinzu. Die anderen drei Container geben ebenfalls Daten frei. # 4. Die Datenvolumes in jedem Container haben unterschiedliche Namen, entsprechen jedoch demselben Datenverzeichnis im Linux-System. Das heißt, die Datenvolume-Verzeichnisse in jedem Container verweisen auf dasselbe Datenverzeichnis im Linux-System [root@localhost _data]# docker ps
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
78cd51a35c41 centos "/bin/bash" vor 17 Minuten Up 17 Minuten trusting_tharp
e6e0988c50cd centos "/bin/bash" vor 17 Minuten Up 17 Minuten docker05
c5ebc03e6819 centos:1.0 "/bin/sh -c /bin/bash" vor 19 Minuten Up 19 Minuten docker04
11d93f9bcd89 centos:1.0 "/bin/sh -c /bin/bash" vor 22 Minuten Up 22 Minuten docker03
a89fb82eeeb5 centos:1.0 "/bin/sh -c /bin/bash" vor 31 Minuten Up 31 Minuten docker02
[root@localhost _data]# docker inspect e6e0988c50cd
    "Reittiere": [
      {
        "Typ": "Volumen",
        "Name": "fc54c991eea888057575be45a03fe22a32303a6b1239a0a4099dd201b0b41a62",
        "Quelle": "/var/lib/docker/volumes/fc54c991eea888057575be45a03fe22a32303a6b1239a0a4099dd201b0b41a62/_data",
        "Ziel": "volume01",
        "Treiber": "lokal",
        "Modus": "",
        "RW": wahr,
        "Ausbreitung": ""
      },
		]
		
[root@localhost _data]# docker inspect c5ebc03e6819
    "Reittiere": [
      {
        "Typ": "Volumen",
        "Name": "fc54c991eea888057575be45a03fe22a32303a6b1239a0a4099dd201b0b41a62",
        "Quelle": "/var/lib/docker/volumes/fc54c991eea888057575be45a03fe22a32303a6b1239a0a4099dd201b0b41a62/_data",
        "Ziel": "volume01",
        "Treiber": "lokal",
        "Modus": "",
        "RW": wahr,
        "Ausbreitung": ""
      },
		]
[root@localhost _data]# docker inspect 11d93f9bcd89
    "Reittiere": [
      {
        "Typ": "Volumen",
        "Name": "fc54c991eea888057575be45a03fe22a32303a6b1239a0a4099dd201b0b41a62",
        "Quelle": "/var/lib/docker/volumes/fc54c991eea888057575be45a03fe22a32303a6b1239a0a4099dd201b0b41a62/_data",
        "Ziel": "volume01",
        "Treiber": "lokal",
        "Modus": "",
        "RW": wahr,
        "Ausbreitung": ""
      },
		]

Mehrere MySQL zur gemeinsamen Datennutzung

docker run -d -p 3306:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 --volumes-from mysql01 mysql

abschließend:

Konfigurationsinformationen werden zwischen Containern weitergegeben und der Lebenszyklus des Datenvolumencontainers wird fortgesetzt, bis kein Container mehr den Speicherort verwendet.

Sobald die lokalen Daten jedoch lokal gespeichert sind, werden sie nicht gelöscht.

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:
  • docker run -v mountet Datenvolumes abnormal und der Containerstatus wird immer neu gestartet
  • Docker mountet lokale Verzeichnisse und Datenvolumen-Container-Operationen
  • Detaillierte Erläuterung des Docker-Datenmanagements (Datenvolumes und Datenvolume-Container)
  • Eine kurze Zusammenfassung der Bereitstellung eines Docker-Container-Datenvolumens
  • Detaillierte Erläuterung der Container-Datenmengen und der Datenverwaltung in Docker
  • Detaillierte Einführung und Beispiele für Docker-Datenvolumes und -Datencontainer
  • Detaillierte Einführung in Docker-Datenvolumen und Datenvolumencontainer
  • Probleme mit dem benannten Mount und dem anonymen Mount des Docker-Container-Datenvolumens

<<:  js zur Realisierung von Login- und Registrierungsfunktionen

>>:  JDBC-Idee: MySQL importieren, um Java-JAR-Paket zu verbinden (Mac)

Artikel empfehlen

Beispiel für die Implementierung des TikTok-Textschütteleffekts mit CSS

In der täglichen Entwicklung streiten sich Front-...

So erstellen Sie einen Flammeneffekt mit CSS

Unten beginnt der Haupttext. 123WORDPRESS.COM Her...

Django-Online-Bereitstellungsmethode von Apache

Umfeld: 1. Windows Server 2016 Datacenter 64-Bit ...

Implementierung der Vue-Anmeldefunktion

Inhaltsverzeichnis Vorne geschrieben Anmeldeübers...

Implementierung einer nicht geheimen SSH-Kommunikation in Linux

Was ist SSH? Administratoren können sich remote a...

WeChat Mini-Programm Lotterienummerngenerator

In diesem Artikel wird der spezifische Code des W...

So zeichnen Sie spezielle Grafiken in CSS

1. Dreieck Rahmeneinstellungen Code: Breite: 300p...

Details zu verschiedenen Schriftformaten in HTML-Webseiten

Dieser Abschnitt beginnt mit den Details der Text...

Grundlegende Anwendungsbeispiele für Listener in Vue

Inhaltsverzeichnis Vorwort 1. Grundlegende Verwen...

Slot-Anordnung und Nutzungsanalyse in Vue

Die Betriebsumgebung dieses Tutorials: Windows 7-...