Docker stellt nginx bereit und mountet Ordner und Dateioperationen

Docker stellt nginx bereit und mountet Ordner und Dateioperationen

Während dieser Zeit habe ich Docker studiert und bin beim Bereitstellen von Nginx auf eine Falle gestoßen. Das Hauptproblem war, dass ich nicht wusste, wie man Dateien und Ordner mountet. Nach wiederholten Experimenten und dem Überprüfen von Online-Tutorials habe ich es wie folgt zusammengefasst:

1. Laden Sie zuerst das Nginx-Mirror-Paket herunter.

Docker-Pull Nginx

2 (Schlüssel) Überprüfen Sie den spezifischen Speicherort von Konfigurationsdateien, Protokollen und anderen Dateien im Nginx-Image. Nur wenn Sie den Pfad der Image-Konfigurationsdatei finden, können die nachfolgenden bereitgestellten Dateien und Ordner diese Pfade abdecken

Öffnen Sie den Bildcontainer im Terminalmodus

[root@docker2 nginx]# docker run -i -t nginx /bin/bash
root@3b39da9212fe:/# ls -l
insgesamt 8
drwxr-xr-x 2 root root 4096 26. April 00:00 bin
drwxr-xr-x 2 root root 6 Feb 23 23:23 boot
drwxr-xr-x 5 root root 360 30. Mai 01:39 dev
drwxr-xr-x 1 root root 66 30. Mai 01:39 usw.
drwxr-xr-x 2 root root 6 Feb 23 23:23 Startseite
drwxr-xr-x 1 root root 45 26. April 00:00 lib
drwxr-xr-x 2 root root 34 26. April 00:00 lib64
drwxr-xr-x 2 root root 6 Apr 26 00:00 Medien
drwxr-xr-x 2 root root 6 26. April 00:00 mnt
drwxr-xr-x 2 root root 6 Apr 26 00:00 opt
dr-xr-xr-x 176 root root 0 30. Mai 01:39 proc
drwx------ 2 Wurzel Wurzel 37 Apr 26 00:00 Wurzel
drwxr-xr-x 4 root root 43 Apr 26 00:00 laufen
drwxr-xr-x 2 root root 4096 26. April 00:00 sbin
drwxr-xr-x 2 root root 6 Apr 26 00:00 srv
dr-xr-xr-x 13 root root 0 25. Mai 06:07 sys
drwxrwxrwt 1 root root 6 30. April 13:55 tmp
drwxr-xr-x 1 root root 66 26. April 00:00 usr
drwxr-xr-x 1 root root 17 Apr 26 00:00 var

Suchen Sie den Pfad der Konfigurationsdatei nginx.conf im Image /etc/nginx/nginx.conf

root@3b39da9212fe:/etc/nginx# ls -l /etc/nginx/
insgesamt 36
drwxr-xr-x 2 root root 26. April 30 13:55 conf.d
-rw-r--r-- 1 root root 1007 9. April 16:01 fastcgi_params
-rw-r--r-- 1 root root 2837 9. April 16:01 koi-utf
-rw-r--r-- 1 Wurzel Wurzel 2223 9. April 16:01 koi-win
-rw-r--r-- 1 root root 5170 9. April 16:01 mime.types
lrwxrwxrwx 1 root root 22 Apr 9 16:01 Module -> /usr/lib/nginx/modules
-rw-r--r-- 1 root root 643 9. April 16:01 nginx.conf
-rw-r--r-- 1 root root 636 9. April 16:01 scgi_params
-rw-r--r-- 1 root root 664 9. April 16:01 uwsgi_params
-rw-r--r-- 1 root root 3610 9. April 16:01 win-utf

Suchen Sie den Pfad der Konfigurationsdatei default.conf /etc/nginx/conf.d/default.conf

root@3b39da9212fe:/etc# ls -l /etc/nginx/conf.d/       
insgesamt 4
-rw-r--r-- 1 root root 1093 9. April 16:01 default.conf

Suchen Sie den HTML-Pfad des Standard-Homepage-Ordners /usr/share/nginx/html

root@3b39da9212fe:/etc# ls -l /usr/share/nginx/   
gesamt 0
drwxr-xr-x 2 root root 40 30. April 13:55 html

Suchen Sie den Protokolldateipfad /var/log/nginx

ls -l /var/log/   
insgesamt 96
drwxr-xr-x 1 root root 60 30. April 13:55 apt
-rw-rw---- 1 root utmp 0 26. April 00:00 btmp
-rw-r--r-- 1 root root 57602 30. April 13:55 dpkg.log
-rw-r--r-- 1 root root 3264 30. April 13:55 Faillog
-rw-rw-r-- 1 root utmp 29784 Apr 30 13:55 letztes Protokoll
drwxr-xr-x 1 root root 41 30. April 13:55 nginx
-rw-rw-r-- 1 root utmp 0 26. April 00:00 wtmp

Geben Sie dann den Ausgang ein, um das Containerterminal zu verlassen

3 Starten Sie den mynginx-Container mit dem nginx-Image und mounten Sie Ordner und Dateien in den Container

Hier erkläre ich, warum ich Konfigurationsdateien und -ordner mounte. Wenn Sie Anwendungen bereitstellen und nginx-Konfigurationsdateien problemlos ändern möchten, müssen Sie beim Mounten von Dateien oder Ordnern nur die Dateien in der Mount-Quelle oder in den Ordnern ändern, anstatt jedes Mal den Befehl docker run -i -t nginx /bin/bash zu verwenden, um das Image-Terminal aufzurufen und die Konfigurationsdateien zu ändern. Im Folgenden werde ich zeigen, wie ich meine eigene nginx-Homepage ändere und sie im Container mounte, um die ursprüngliche Standard-Homepage zu überschreiben.

Erstellen Sie Mount-Quelldateien und -Ordner im Linux-System (meins ist centos7)

mkdir -p /data/nginx/conf
mkdir -p /data/nginx/conf.d
mkdir -p /data/nginx/html
mkdir -p /data/nginx/logs

Erstellen Sie dann eine nginx.conf-Konfigurationsdatei im Ordner conf und geben Sie den Inhalt ein. Ich schlage vor, dass Sie meine Konfiguration nicht kopieren. Verwenden Sie den ersten Schritt, den ich oben vorgestellt habe, um das Terminal des nginx-Containers aufzurufen und den Inhalt der nginx.conf-Konfigurationsdatei zur Änderung in die neu erstellte nginx.conf-Datei im Linux-System zu kopieren. Dadurch wird sichergestellt, dass der Pfad in der Konfigurationsdatei mit dem Pfad der Konfigurationsdatei im Image übereinstimmt.

[root@docker2 /]# cd /data/nginx/conf
[root@docker2 conf]# mehr nginx.conf 
Benutzer nginx;
Arbeiterprozesse 1;

Fehlerprotokoll /var/log/nginx/error.log warnen;
pid /var/run/nginx.pid;

Ereignisse {
  Arbeiterverbindungen 1024;
}

http {
  /etc/nginx/mime.types einschließen;
  Standardtyp Anwendung/Oktett-Stream;

  log_format main '$remote_addr - $remote_user [$time_local] "$request" '
           '$status $body_bytes_sent "$http_referer" '
           '"$http_user_agent" "$http_x_forwarded_for"';

  Zugriffsprotokoll /var/log/nginx/access.log Haupt;

  sendfile an;
  #tcp_nopush ein;

  KeepAlive-Timeout 65;

  #gzip ein;

  schließen Sie /etc/nginx/conf.d/*.conf ein;
}

Erstellen Sie in conf.d eine Datei default.conf und geben Sie den folgenden Inhalt ein. Ich habe diesen Inhalt auch aus der Standardkonfigurationsdatei default.conf im Image kopiert und geändert. Ich empfehle Ihnen auch, meinen Inhalt nicht zu kopieren, da die betreffenden Pfade möglicherweise nicht mit den Pfaden in Ihrem Nginx-Image übereinstimmen. Auf diese Weise können Sie beim Starten des Images zum Erstellen eines Containers die Mount-Methode nicht verwenden, um den Pfad im Container zu überschreiben.

[root@docker2 conf]# mehr /data/nginx/conf.d/default.conf  
Server {
  hören Sie 80;
  Servername localhost;

  #Zeichensatz koi8-r;
  #access_log /var/log/nginx/host.access.log main;

  Standort / {
    root /usr/share/nginx/html;
    index1.html;
  }

  #Fehlerseite 404 /404.html;

  # Server-Fehlerseiten auf die statische Seite /50x.html umleiten
  #
  Fehlerseite 500 502 503 504 /50x.html;
  Standort = /50x.html {
    root /usr/share/nginx/html;
  }

  # Proxy für die PHP-Skripte an Apache, das auf 127.0.0.1:80 lauscht
  #
  #Standort ~ \.php$ {
  # Proxy-Passwort http://127.0.0.1;
  #}

  # Übergeben Sie die PHP-Skripte an den FastCGI-Server, der auf 127.0.0.1:9000 lauscht.
  #
  #Standort ~ \.php$ {
  #Wurzel-HTML;
  # fastcgi_pass 127.0.0.1:9000;
  # fastcgi_index index.php;
  # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
  #fastcgi_params einschließen;
  #}

  # Zugriff auf .htaccess-Dateien verweigern, wenn das Apache-Dokumentenstammverzeichnis
  # stimmt mit nginx überein
  #
  #Standort ~ /\.ht {
  # alles ablehnen;
  #}
}

Bitte beachten Sie, dass ich den Inhalt der ursprünglichen Standardkonfigurationsdatei geändert habe. An einer der oben genannten Stellen habe ich den Standard-Homepage-Index von nginx in 1.html geändert. 1.html ist der Name der Homepage, die ich selbst erstellt habe.

Erstellen Sie eine 1.html-Homepage-Datei im HTML-Ordner und schreiben Sie Ihre eigene Homepage. Hier habe ich Notepadd++ verwendet, um die 1.html-Datei unter Windows zu schreiben und sie dann über das Tool auf das Linux-System zu kopieren. Beachten Sie, dass Sie bei Chinesisch möglicherweise die Kodierung konvertieren müssen, da sie sonst möglicherweise verstümmelt wird. Beispielsweise verwende ich hier die Ansi-Kodierung

<html>
<Kopf>
<Titel>Mynginx</Titel>
</Kopf>
<Text>
<h1>
Willkommen bei der Verwendung von nginx!
</h1>
</body>
</html>

Jetzt ist es an der Zeit, den Container zu erstellen und die Dateien und Ordner zu mounten

[root@docker2 conf]# docker run --name mynginx -d -p 80:80 -v /data/nginx/html:/usr/share/nginx/html -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf -v /data/nginx/logs:/var/log/nginx nginx

Denken Sie daran, das Zielverzeichnis oder den Dateipfad mit dem Pfad im Image konsistent zu halten, z. B. /etc/nginx/nginx.conf, der im zweiten Schritt gefunden wurde.

docker ps, um zu sehen, ob es erfolgreich gestartet wurde

[root@docker2 conf]# docker ps 
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
32ad171d34a2 nginx „nginx -g ‚Daemon von …‘“ vor 17 Stunden. Vor 17 Stunden aktiv 0.0.0.0:80->80/tcp mynginx

Wenn der Start fehlschlägt, verwenden Sie zuerst docker ps -a, um den fehlgeschlagenen Container anzuzeigen, und verwenden Sie docker rm CONTAILNER ID, um die Container-ID zu löschen. Suchen Sie dann das Problem und verwenden Sie dann docker run, um den Container zu starten. Wenn er immer noch nicht gestartet werden kann, nachdem sichergestellt wurde, dass es keine Probleme mit dem bereitgestellten Verzeichnis und den Dateien gibt, handelt es sich um ein Berechtigungsproblem. Im Internet wird empfohlen, nach docker run den Parameter --privileged=true hinzuzufügen.

Öffnen Sie die Webseite unter http://IP, um den Effekt zu sehen.

Der obige Artikel über Docker, die Bereitstellung von Nginx und das Einbinden von Ordnern und Dateivorgängen ist alles, was ich mit Ihnen teilen kann. Ich hoffe, er kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden.

Das könnte Sie auch interessieren:
  • Implementierung der Einbindung eines freigegebenen NFS-Verzeichnisses in einen Docker-Container
  • Docker - Zusammenfassung von 3 Möglichkeiten zum Ändern von Container-Mount-Verzeichnissen
  • Docker mountet lokale Verzeichnisse und Datenvolumen-Container-Operationen
  • Lösen Sie das Problem der Docker-Protokollmontage
  • Docker startet das Elasticsearch-Image und behebt den Fehler nach dem Mounten des Verzeichnisses
  • Schritte zum Einrichten und Mounten freigegebener Ordner auf Windows-Host und Docker-Container
  • Detaillierte Erläuterung des Startens und Einhängens des Docker-Nginx-Containers in den lokalen
  • Beheben Sie das Problem, dass beim Mounten von Dateien oder Verzeichnissen der relative Pfad ./ in Docker Run fehlschlägt

<<:  Implementierung des Whack-a-Mole-Spiels in JavaScript

>>:  Zusammenfassung wichtiger Komponenten von MySQL InnoDB

Artikel empfehlen

Detaillierte Erläuterung der Verwendung des Linux-Befehls seq

01. Befehlsübersicht Der Befehl „seq“ wird verwen...

Win10 Installation von MySQL 5.7 MSI-Version des Tutorials mit Bildern und Text

Ich habe es im MSI-Format installiert, hauptsächl...

Detaillierte Erklärung des Unterschieds zwischen CSS-Link und @import

Wie fügt man CSS in HTML ein? Es gibt drei Möglic...

Einführung in die Verwendung des HTML-Basistags target=_parent

Der <base>-Tag gibt die Standardadresse oder...

Zusammenfassung der CSS-Methoden zum Löschen von Floats

Float wird häufig im Layout von Webseiten verwend...

HTML Tutorial: Sammlung häufig verwendeter HTML-Tags (4)

Verwandte Artikel: Anfänger lernen einige HTML-Ta...

Zusammenfassung der Fallstricke beim Importieren von OVA-Dateien in VMware

Quelle des Problems Wie wir alle wissen, erzeugt ...

Die Verbindung zwischen JavaScript-Konstruktoren und Prototypen

Inhaltsverzeichnis 1. Konstrukteure und Prototype...

Teilen Sie 20 JavaScript-Einzeilencodes

Inhaltsverzeichnis 1. Holen Sie sich den Wert des...

Die ultimative Lösung zum Schreiben von Bash-Skripten mit Node.js

Inhaltsverzeichnis Vorwort zx-Bibliothek $`Befehl...