So erstellen Sie einen Nginx-Server mit Docker

So erstellen Sie einen Nginx-Server mit Docker

Betriebsumgebung: MAC

Docker-Version: Docker version 17.12.0-ce, build c97c6d6

1. Starten Sie den Nginx-Server

Starten Sie den Nginx-Server und rufen Sie das simulierte Terminal auf

docker run -p 8080:80 --name nginx_web -it nginx /bin/bash

2. Informieren Sie sich über den Speicherort der Nginx-Image-Konfigurationsdatei

Speicherort der Protokolldatei: /var/log/nginx

Speicherort der Konfigurationsdatei: /etc/nginx

Speicherort der Ressourcen: /usr/share/nginx/html

Der obige Konfigurationspfad ist die Adresse des virtuellen Linux auf meinem Computer. Bitte überprüfen Sie Ihren eigenen Konfigurationsspeicherort.

3. Ändern Sie die Standard-Homepage von Nginx und testen Sie, ob sie ausgeführt werden kann

Wichtiger Tipp: Für diejenigen, die sich nicht darum kümmern möchten, können Sie es direkt von Schritt 4 aus ausführen

/usr/share/nginx/html

echo "<h1>Hallo Docker</h1>" > index.html

Einige Freunde, die hierher gekommen sind, stellen möglicherweise fest, dass beim Zugriff auf den Port localhost:8080 zum ersten Mal die Nginx-Willkommensoberfläche und beim zweiten Mal eine 404-Eingabeaufforderung angezeigt wird.

Dieser Artikel geht nicht näher auf dieses Problem ein. Wenn Sie es nicht verstehen, können Sie hier nachschlagen:
1. Warum Daemon Off verwenden, wenn Nginx in Docker ausgeführt wird?
2. Wie kann ich den Docker-Container nach dem Beenden weiterlaufen lassen?
3. So verwenden Sie den Docker-Befehl „run“

Nachdem Docker „Docker Run“ ausgeführt hat, virtualisiert es zunächst eine vereinfachte Version von Linux (die nur die einfachsten Funktionen des Systembetriebs enthält) basierend auf dem aktuellen Betriebssystem und lädt dann unser Nginx-Image. Wenn das Nginx-Image in unsere virtuelle Linux-Umgebung geladen wird, entspricht dies der Ausführung eines Skripts im System, und dieses Skript ist Nginx.

Weil Nginx standardmäßig nicht als Daemon-Prozess ausgeführt wird. Wenn Docker also auf Port 80 auf die Anforderung hört, beendet es den Nginx-Prozess nach Abschluss. Es gibt nur einen Prozess im Container, und dieser ist kein Daemon-Prozess. Er wird nach der Ausführung des Anforderungsprozesses zerstört. Dann besteht für die Existenz dieses Containers kein Bedarf mehr und dieser Dienst in Docker wird gestoppt. Aus diesem Grund können wir den aktuell ausgeführten Container nicht sehen, wenn wir Docker Top ausführen.

Als vorübergehende Lösung für das Problem, dass Nginx nach nur einmaliger Ausführung beendet wird, können wir das interaktive Terminal aufrufen und nginx ausführen und nginx als Daemon-Prozess im Hintergrund laufen lassen.

Sehen Sie sich unsere laufenden Container an

Roverliang$ Docker PS
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN

Wenn nichts vorhanden ist, bedeutet dies, dass kein Container ausgeführt wird.

Zeigen Sie die Container an, deren Ausführung beendet ist

Roverliang$ Docker ps -a
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
5bff285f60b3 nginx "/bin/bash" vor 9 Minuten Beendet (0) vor 6 Minuten nginx_web

Starten Sie den Container neu, den wir gerade gestartet haben

Docker startet nginx_web

Betreten unseres Containers

Docker anhängen nginx_web

echo "<h1>Hallo Docker</h1>" > /usr/share/nginx/html/index.html

nginx und 

Verwenden Sie dann die Tastenkombination Strg + Q, um den aktuellen Container zu verlassen

Anschließend besuchen wir noch einmal im Browser: http://localhost:8080/

Nach so vielen Schwierigkeiten sehen wir endlich den Inhalt, den wir erwartet haben.

Hallo Docker

4. Machen Sie aus der vorherigen Nginx-Demo eine spielbare Demo

Erstellen Sie zunächst den Ordner, den wir auf unserem lokalen Computer zuordnen müssen

 mkdir -p docker_study/log docker_study/etc docker_study/html

Hinweis: Erstellen Sie es in Ihrem Home-Verzeichnis

Kopieren Sie die Konfigurationsdatei von nginx in unseren Docker

Docker cp 65bc23f952db:/etc/nginx/ /Benutzer/roverliang/docker_study/etc/

Schließen Sie unseren Container

Docker stoppt nginx_web

Löschen Sie die Demo für unsere Praxis und erstellen Sie von Grund auf eine brauchbare.

Docker RM Nginx_Web

Ordnen Sie das Nginx-Image unserem lokalen Verzeichnis zu, um die Dateiänderung zu erleichtern

Docker-Ausführung \
-p 8080:80 \
--name nginx_web \
-v /Benutzer/roverliang/docker_study/log/:/var/log/nginx \
-v /Benutzer/roverliang/docker_study/etc/nginx.conf:/etc/nginx/nginx.conf \
-v /Benutzer/roverliang/docker_study/html/:/usr/share/nginx/html \
-Es \
-D \
nginx \
/bin/bash \

An diesem Punkt stellen wir möglicherweise immer noch fest, dass beim Zugriff auf http://localhost:8080/ kein Inhalt vorhanden ist. Aber keine Sorge, der Prozess der Problemlösung ist der Prozess des Lernens neuer Dinge. Suchen Sie weiter online nach Informationen und lesen Sie Folgendes:

Docker führt nginx aus

Hier ist eine Passage aus dem Artikel, die mir plötzlich die Augen öffnete:

Als ich es zuvor ausgeführt habe, habe ich normalerweise den interaktiven Modus verwendet: -i stellte sicher, dass die Standardeingabe des Containers aktiviert war. -t generierte ein TTY-Terminal für den Container und fügte am Ende des Befehls ein /bin/bash hinzu, um die Interaktion sicherzustellen. Tatsächlich lief Nginx jedoch nicht, was mich zu der Annahme veranlasste, dass die Portbindung des Containers nicht persistent war.

Als nächstes müssen wir unseren Container herunterfahren und löschen und ihn dann mit dem folgenden Befehl neu starten:

Docker-Ausführung \
-p 8080:80 \
--name nginx_web \
-v /Benutzer/roverliang/docker_study/log/:/var/log/nginx \
-v /Benutzer/roverliang/docker_study/etc/nginx.conf:/etc/nginx/nginx.conf \
-v /Benutzer/roverliang/docker_study/html/:/usr/share/nginx/html \
-D \
nginx

5. Nginx-Konfiguration ändern und eine Website analysieren

Ändern Sie die soeben kopierte Nginx-Konfiguration

cd /Benutzer/roverliang/docker_study/etc
vim nginx.conf

Fügen Sie dem HTTP-Modul die folgende Konfiguration hinzu:

 Server
  {  
    hören Sie 80; 
    Servername www.test_nginx.com;
    Index Index.html;
    root /usr/share/nginx/html;
  }  

Gehen Sie dann zurück zum Host und binden Sie den Host 127.0.0.1 www.test_nginx.com

Sie sind fertig!

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:
  • So konfigurieren Sie nginx+php+mysql in Docker
  • Lösung für ungültige Nginx-Cross-Domain-Einstellung Access-Control-Allow-Origin
  • Beispielmethode zum Bereitstellen eines React-Projekts auf Nginx
  • Verwenden Sie das Tool nginx.vim zur Syntaxhervorhebung und Formatierung der Konfigurationsdatei nginx.conf
  • Detaillierte Erläuterung der Fallstricke von add_header im Nginx-Konfigurationstutorial
  • So konfigurieren Sie die bidirektionale Zertifikatsüberprüfung auf dem Nginx-Proxyserver
  • Lösung für das Problem des Informationsverlusts mit "_" im Header bei Verwendung des Nginx-Proxys
  • Shell-Skript Nginx-Automatisierungsskript
  • Eine kurze Erläuterung, warum Daemon Off beim Ausführen von Nginx in Docker verwendet wird
  • Einführung in das Batch-Cache-Löschskript von nginx proxy_cache

<<:  Windows 10 und MySQL 5.5 installieren und verwenden ohne Installation ausführliches Tutorial (Bild und Text)

>>:  Detaillierte Erklärung zur Implementierung der Anmeldefunktion durch Kombination von React mit der Formularkomponente von Antd

Artikel empfehlen

Eine kurze Analyse des Unterschieds zwischen FIND_IN_SET() und IN in MySQL

Ich habe die Mysql FIND_IN_SET-Funktion vor einig...

Detaillierte Schritte zur Yum-Konfiguration des Nginx-Reverse-Proxys

Teil.0 Hintergrund Die Intranetserver des Unterne...

Lösen Sie das Matching-Problem in CSS

Problembeschreibung Wie wir alle wissen, wird bei...

Analyse des Prinzips der Verwendung von PDO zur Verhinderung von SQL-Injection

Vorwort Dieser Artikel verwendet die Vorverarbeit...

webpack -v Fehlerlösung

Hintergrund Ich möchte die Webpack-Version überpr...

Was sind Inline-Elemente und Blockelemente?

1. Inline-Elemente nehmen nur die Breite des Inhal...

Beispiel für die Methode „Mysql implementiert Nullwerte zuerst/letzten“

Vorwort Wir wissen bereits, dass MySQL den SQL-Be...

So können Sie lange Vue-Listen schnell laden

Inhaltsverzeichnis Hintergrund Hauptinhalt 1. Kom...

Detailliertes Tutorial zur Installation von Docker auf CentOS 8

1. Frühere Versionen yum entfernen Docker Docker-...

Zusammenfassung einiger Gedanken zur Binlog-Optimierung in MySQL

Frage Frage 1: Wie kann der Leistungsverlust beho...