Docker-Volumes-Dateizuordnungsmethode

Docker-Volumes-Dateizuordnungsmethode

Hintergrund

Wenn Sie am Blockchain-Protokollmodul arbeiten und der Container ausgeführt wird, muss die Protokolldatei zur einfachen Anzeige dem Hostcomputer zugeordnet werden. So implementiere ich es.

erreichen

Über den Volumes-Parameter der Docker-Compose-Konfigurationsdatei

Beispiel einer Konfigurationsdatei:

 Bände:
   – /var/run/:/host/var/run/
   - ./channel-artifacts:/var/hyperledger/configs
   – ./fabric_logs:/tmp/fabric_logs/

Ordnen Sie das Verzeichnis /tmp/fabric_logs im Container dem Verzeichnis ./fabric_logs im aktuellen Verzeichnis des Hosts zu. Diese beiden Verzeichnisse teilen sich Daten.

Konfigurieren Sie beim Erstellen eines Containers relevante Parameter im Code

Fügen Sie beim Erstellen eines Containers im Code Folgendes hinzu:

Funktion (vm *DockerVM) createContainer(ctxt Kontext.Kontext, Client DockerClient,
 imageID-Zeichenfolge, ContainerID-Zeichenfolge, args []Zeichenfolge,
 env []string, attachStdout bool) Fehler {
 Volumen := make(map[string]struct{})
 var mounts []docker.Mount
 var Quellzeichenfolge
 var Zielzeichenfolge
 var fabricCfgPath = os.Getenv("FABRIC_CFG_PATH")
 var configName Zeichenfolge
 _, Fehler := os.Stat(fabricCfgPath)
 wenn err == nil {
  Konfigurationsname = Zeichenfolgen.ToLower(Peer_Prefix)
  konfiguration := viper.Neu()
  config.SetConfigName(Konfigurationsname)
  config.AddConfigPath(fabricCfgPath)
  config.ReadInConfig()
  config.SetEnvPrefix("KERN")
  config.AutomaticEnv()
  replacer := strings.NewReplacer(.", "_")
  config.SetEnvKeyReplacer(Ersatz)
  config.SetConfigType("yaml")
  Ziel = config.GetString("logging.logpath")
  //fmt.Println(Ziel)
 }
 wenn Ziel == "" {
  Ziel = "/tmp/fabric_logs/"
 }
 Quelle = "/tmp/chaincode_logs/" + Container-ID
 volumes[Ziel] = struct{}{}
 mount := docker.Mount{
  Name: "binden",
  Quelle: Quelle,
  Ziel: Ziel,
  Modus: "rw",
  RW: stimmt,
  Treiber: "rprivate",
 }
 Halterungen = Anhängen(Halterungen, Halterung)
 config := docker.Config{Befehl: args, Image: Bild-ID, Umgebung: Umgebung, Volumes: Volumes, Mounts: Mounts, AttachStdout: attachStdout, AttachStderr: attachStdout}
 hostConfig := getDockerHostConfig()
 hostConfig.Binds = []string{
  Quelle + ":" + Ziel + ":rw",
 }
 copts := docker.CreateContainerOptions{Name: Container-ID, Konfiguration: &config, Hostkonfiguration: Hostkonfiguration}
 dockerLogger.Debugf("Container erstellen: %s", Container-ID)
 _, err = Client.Container erstellen(kopiert)
 wenn err != nil {
  Rückgabefehler
 }
 dockerLogger.Debugf("Container erstellt: %s", imageID)
 Rückgabe Null
}

Die Parameter „Volumes“, „Mounts“ und „Hostconfig.Binds“ müssen entsprechend Ihren eigenen Zuordnungsbeziehungen ausgefüllt werden.

Hier entlang und durch:

1. Starten Sie die Docker-Compose-Konfigurationsdatei

2. Oder starten Sie mit dem Parameter docker -v in der Befehlszeile

Erzielen Sie den gleichen Effekt.

Ergänzung: Zwei Möglichkeiten der Docker-Ordnerzuordnung --- Host-Volume-Zuordnung und Zuordnung freigegebener Ordner

Docker-Container speichern keine Daten

Bitte verwenden Sie für wichtige Daten einen externen Datenträger (Datenpersistenz).

Container können reale Maschinenverzeichnisse oder gemeinsam genutzten Speicher als Volumes bereitstellen

Host-Volume-Zuordnung

[root@docker1 ~]# mkdir /var/data
[root@docker1 ~]# docker run -it -v /var/data:/abc myos
[root@f1fb58b85671 /]# cd /abc/
[root@f1fb58b85671 abc]# Berühren Sie F1
[root@f1fb58b85671 abc]# ls
f1
[root@docker1 ~]# cd /var/data/
[root@docker1 Daten]# ls
f1
[root@docker1 data]# touch zhy

Zuordnung mithilfe von gemeinsam genutztem Speicher

Ideen:

Verwenden Sie einen Host als NFS-Host, erstellen Sie entsprechende Ordner und geben Sie diese für die beiden Docker-Hosts frei. Die beiden Docker-Hosts ordnen die freigegebenen Ordner den Containern zu, sodass die entsprechenden Container den Inhalt des NFS-Hosts freigeben können. Die entsprechenden Seitenordner von http- und anderen Servern können in dieser Form verwendet werden, sodass mehrere Container ein Unternehmen ausführen können.

NFS-Hostkonfiguration [192.168.6.77]

[root@nfs ~]# yum -y installiere nfs-utils
[root@nfs ~]# vim /etc/exports
/öffentlich *(rw)
[root@nfs ~]# systemctl starte den NFS-Server neu
Neustart von nfs-serve.service fehlgeschlagen: Einheit nicht gefunden.
[root@nfs ~]# mkdir /public
[root@nfs ~]# cd /public/
[root@nfs öffentlich]# touch nfs.txt
[root@nfs öffentlich]# ls
nfs.txt

Docker1-Hostkonfiguration

[root@docker1 ~]# vim /etc/fstab 
192.168.6.77:/öffentlich /mnt/nfs nfs-Standardeinstellungen,_netdev 0 0
[root@docker1 ~]# mkdir /mnt/nfs 
[root@docker1 ~]# systemctl NFS-Server neu starten
[root@docker1 ~]# mount -a
[root@docker1 ~]# df -h
192.168.6.77:/öffentlich 17G 3,2G 14G 19 % /mnt/nfs
[root@docker1 ~]# docker run -it -v /mnt/nfs/:/zhuhaiyan 192.168.6.153:5000/myos
[root@c7c376e3755a /]# cd /zhuhaiyan 
[root@c7c376e3755a zhuhaiyan]# ls
nfs.txt

Docker2-Hostkonfiguration

[root@docker2 ~]# vim /etc/fstab 
192.168.6.77:/öffentlich /mnt/nfs nfs-Standardeinstellungen,_netdev 0 0
[root@docker2 ~]# mkdir /mnt/nfs 
[root@docker2 ~]# systemctl NFS-Server neu starten
[root@docker2 ~]# mount -a
[root@docker2 ~]# df -h
192.168.6.77:/öffentlich 17G 3,2G 14G 19 % /mnt/nfs
[root@docker2 ~]# docker run -it -v /mnt/nfs/:/zhuhaiyan 192.168.6.153:5000/myos
[root@cdd805771d07 /]# cd /zhuhaiyan/
[root@cdd805771d07 zhuhaiyan]# ls
nfs.txt

Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Sollten dennoch Fehler oder unvollständige Überlegungen vorliegen, freue ich mich über eine Korrektur.

Das könnte Sie auch interessieren:
  • Einführung in Container-Datenvolumes in Docker
  • Zwei Möglichkeiten zum Verwalten von Volumes in Docker
  • Löschvorgang für Docker-Volumes
  • So implementieren Sie die Docker-Volume-Montage
  • Detaillierte Erklärung der Docker-Datenspeichervolumes
  • Details und Beispiele zur Docker-Volume-Nutzung
  • Docker schreibt Daten auf das Datenvolumen

<<:  Detaillierte Erklärung und praktische Übungen zum Mysql-Tuning-Erklärtool (empfohlen)

>>:  Müssen Designer das Programmieren lernen?

Artikel empfehlen

Hinzufügen und Löschen von Tabelleninformationen mit Javascript

Erste Schritte mit JavaScript JavaScript ist eine...

Docker Compose-Installationsmethoden in verschiedenen Umgebungen

1. Online-Installation Derzeit habe ich nur die O...

Detaillierte Erklärung des Unterschieds zwischen Tags und Elementen in HTML

Ich glaube, dass es vielen Freunden, die sich mit ...

Das WeChat-Applet zeichnet die Bewegungsbahn des Benutzers auf

Inhaltsverzeichnis Konfiguration hinzufügen JSON-...

7 native JS-Fehlertypen, die Sie kennen sollten

Inhaltsverzeichnis Überblick 1. Bereichsfehler 2....

MySQL 8.0.13 Download- und Installations-Tutorial mit Bildern und Text

MySQL ist die am häufigsten verwendete Datenbank....

Verwenden Sie die Befehle more, less und cat in Linux, um Dateiinhalte anzuzeigen

Unter Linux können die Befehle cat, more und less...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.22

Installation und Konfiguration von MySQL8.0.22 (s...

Implementierung eines Redis Master-Slave-Clusters basierend auf Docker

Inhaltsverzeichnis 1. Ziehen Sie das Redis-Image ...

Ein kurzer Vortrag über die Geschichte von React Router

Wenn Sie React Router verstehen möchten, sollten ...

Elemente der Benutzererfahrung oder Elemente des Webdesigns

System- und Benutzerumgebungsdesign <br />D...

Detaillierte Erklärung der Speicher-Engine in MySQL

Übersicht über die MySQL-Speicher-Engine Was ist ...

Erläuterung der MySQL-Indexoptimierung

Bei unserer täglichen Arbeit führen wir manchmal ...

Einige Schlussfolgerungen zur Gestaltung von Portal-Website-Fokusbildern

Fokusbilder sind eine Möglichkeit, Inhalte zu präs...