Der Zweck der Plug-in-Datei:
Es gibt zwei Möglichkeiten, einen Container auszuführen:
- Docker-Run-Befehl
- Docker-Compose-Befehl
Die Docker-Run-Befehlsmethode verwendet den Parameter -v, um das externe Hostverzeichnis im Pfad innerhalb des Containers bereitzustellen. Wenn mehrere Bereitstellungspunkte vorhanden sind, geben Sie diese über mehrere an -v-Parameter und nur absolute Pfade können verwendet werden. Der Befehl docker-compose ist einfach zu beschreiben. Um genau zu sein, kann ein Dienst mehrere Container enthalten, und die Bereitstellungskonfiguration des externen Pfads wird ebenfalls konfiguriert -v-Parameter. Der Vorteil besteht darin, dass Sie einen relativen Pfad verwenden können, der natürlich relativ zum Pfad der Datei docker-compose.yml ist. Ein weiterer Vorteil besteht darin, dass der Befehl für Docker-Compose zum Starten des Containers relativ einfach ist.
Angenommen, die Struktur des Bildverpackungspfads lautet wie folgt:
├── build.sh
├── docker-compose.yml
├── Dockerfile
├── mynginx.conf
├── nginx-vol
│ ├── conf.d
│ │ └── mynginx.conf
│ ├── html
│ │ └── index.html
│ └── logs
│ ├── access.log
│ └── error.log
└── run.sh
Nach dem Login kopieren
Dockerfile ist die Konfigurationsdatei zum Erstellen des Bildes und der Inhalt lautet wie folgt:
FROM nginx
LABEL maintainer="xxx" email="<xxx@xxx.com>" app="nginx test" version="v1.0"
ENV WEBDIR="/data/web/html"
RUN mkdir -p ${WEBDIR}
EXPOSE 5180
Nach dem Login kopieren
Geben Sie basierend auf Nginx den neuen Datendateipfad als /data/ an. web/html, und der verfügbar gemachte Port ist 5180.
Kompilieren Sie ein neues Image mit dem folgenden Befehl:
docker build -t nginx:test-v1 .
Nach dem Login kopieren
Das kompilierte Image-Tag ist test-v1. Sie können das lokale Image anzeigen:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx test-v1 d2a0eaea3fac 56 minutes ago 141MB
nginx latest 605c77e624dd 9 days ago 141MB
Nach dem Login kopieren
Sie können sehen, dass das Image mit dem Tag test-v1 einfach das neue Image ist zusammengestellt.
Erstellen Sie das externe Nginx-Volume nginx-vol und die zugehörigen Ordner conf.d, logs und html und legen Sie die entsprechenden Inhalte in den entsprechenden Verzeichnissen ab. Der Inhalt von iindex.html im HTML-Ordner lautet beispielsweise wie folgt:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title>系统时间</title>
<body>
<div id="datetime">
<script>
setInterval("document.getElementById('datetime').innerHTML=new Date().toLocaleString();",1000);
</script>
</div>
</body>
</head>
</html>
Nach dem Login kopieren
Tatsächlich handelt es sich lediglich um eine Seite, auf der die aktuelle Uhrzeit angezeigt wird.
Der Abschnitt „Protokolle“ ist leer. Der Zweck besteht darin, die Protokolle in den externen Speicher zu schreiben, wenn der Container gestoppt oder das Image zerstört wird.
conf.d unten ist die personalisierte Nginx-Konfiguration. Der Inhalt lautet wie folgt:
server {
listen 5180;
#listen [::]:5180;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
location / {
root /data/web/html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#location ~ /\.ht {
# deny all;
}
Nach dem Login kopieren
Tatsächlich werden der Port und der Root-Pfad basierend auf der Standard-Default.conf von Nginx geändert. Der Zweck besteht darin, zu veranschaulichen, dass auch Nginx-Konfigurationsdateien verwendet werden können Externer Speicher: Wenn Ihr eigenes Programm die Konfigurationsdatei ändern kann, können Sie die Konfigurationsdatei auf diese Weise ändern, während der Container ausgeführt wird. Die geänderte Konfigurationsdatei wird tatsächlich im externen Speicher gespeichert, sodass sie nicht verschwindet, wenn der Container stoppt Die Dateien im Image werden nicht wiederhergestellt.
Docker-Ausführungsmodus
Der Einfachheit halber können Sie den Ausführungsbefehl in ein Shell-Skript wie run.sh schreiben. Der Inhalt lautet wie folgt:
docker run --name nginx-v1 -p 15180:5180 -v /home/project/nginx-test/nginx-vol/logs:/var/log/nginx -v /home/project/nginx-test/nginx-vol/conf.d:/etc/nginx/conf.d -v /home/project/nginx-test/nginx-vol/html:/data/web/html -d nginx:test-v1
Nach dem Login kopieren
Sie können sehen, dass der Befehl 3 -v enthält entsprechen unterschiedlichen externen Speicher-Mounts und werden verschiedenen Verzeichnissen innerhalb des Containers zugeordnet. Die Ports nach
-p (beachten Sie, dass es sich um Kleinbuchstaben handelt) sind der Host-Port bzw. der Container-Port, dh der 15180-Port des Hosts wird dem 5180-Port des Containers zugeordnet, sodass der Nginx-Dienst-Port 5180 vom Container gestartet wird kann auf den 15180-Port des Hosts zugreifen und zugeordnet werden.
Laufende Container anzeigen:
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cf2275da5130 nginx:test-v1 "/docker-entrypoint.…" 6 seconds ago Up 5 seconds 80/tcp, 0.0.0.0:15180->5180/tcp, :::15180->5180/tcp nginx-v1
Nach dem Login kopieren
Detaillierte Zuordnung anzeigen:
docker inspect nginx-v1
Nach dem Login kopieren
zeigt vollständige Informationen an, in denen die vollständige Speicher-Mount-Zuordnung im Abschnitt „Mounts“ eingesehen werden kann.
Schauen Sie direkt unter nginx-vol/logs auf dem Host nach. Sie können sehen, dass das Nginx-Laufprotokoll im Container automatisch in den Speicher des externen Hosts geschrieben wird.
ls -l nginx-vol/logs/
total 12
-rw-r--r-- 1 root root 1397 1月 8 15:08 access.log
-rw-r--r-- 1 root root 4255 1月 8 15:59 error.log
Nach dem Login kopieren
Container stoppen:
docker stop nginx-v1
Nach dem Login kopieren
Container löschen:
docker rm nginx-v1
Nach dem Login kopieren
Docker-Compose-Modus
Docker-Compose installieren
apt-get install docker-compose
Nach dem Login kopieren
Docker-compose.yml-Datei schreiben
version: "3"
services:
nginx:
container_name: mynginx
image: nginx:test-v1
ports:
- 80:5180
volumes:
- ./nginx-vol/html:/data/web/html
- ./nginx-vol/logs:/var/log/nginx
- ./nginx-vol/conf.d:/etc/nginx/conf.d
restart: always
Nach dem Login kopieren
container_name: Geben Sie den Containernamen an
Bild: zur Verwendung Spiegelung und entsprechende Tags
Ports: Host-Port- und Container-Port-Zuordnung
Volumes: Externe Speicher-Mount-Zuordnung
Starten Sie den Container
docker-compose up -d
Creating network "nginxtest_default" with the default driver
Creating mynginx ...
Creating mynginx ... done
Nach dem Login kopieren
Sehen Sie sich den Container an
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
635e2999c825 nginx:test-v1 "/docker-entrypoint.…" 24 seconds ago Up 22 seconds 80/tcp, 0.0.0.0:80->5180/tcp, :::80->5180/tcp mynginx
Nach dem Login kopieren
Sie können sehen, dass der Container gemäß Docker-Compose ausgeführt wird Die .yml-Konfiguration, der Port, der Name und der Mount sind alle normal. Der Zugriff auf Port 80 des Hosts entspricht dem 5180-Dienst des Containers.
Stoppen Sie den Container
docker-compose down
Stopping mynginx ... done
Removing mynginx ... done
Removing network nginxtest_default
Nach dem Login kopieren
Wie Sie sehen, ist es einfacher, Docker-Compose zu verwenden.
Das obige ist der detaillierte Inhalt vonMit welcher Methode werden Nginx-Plug-in-Dateien unter Docker installiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!