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.
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 des Whack-a-Mole-Spiels in JavaScript
>>: Zusammenfassung wichtiger Komponenten von MySQL InnoDB
01. Befehlsübersicht Der Befehl „seq“ wird verwen...
Dieser Artikel beschreibt anhand eines Beispiels ...
Busybox: Ein Schweizer Taschenmesser voller klein...
Ich habe es im MSI-Format installiert, hauptsächl...
Inhaltsverzeichnis Demo1 Fragment erstellen Svelt...
Wie fügt man CSS in HTML ein? Es gibt drei Möglic...
Der <base>-Tag gibt die Standardadresse oder...
Ehrlich gesagt erfordert diese Frage eine Menge g...
Float wird häufig im Layout von Webseiten verwend...
Verwandte Artikel: Anfänger lernen einige HTML-Ta...
Quelle des Problems Wie wir alle wissen, erzeugt ...
Inhaltsverzeichnis 1. Konstrukteure und Prototype...
Inhaltsverzeichnis 1. Holen Sie sich den Wert des...
Einführung in vi/vim Beide sind Multimode-Editore...
Inhaltsverzeichnis Vorwort zx-Bibliothek $`Befehl...