So erstellen Sie manuell ein neues Image mit Docker

So erstellen Sie manuell ein neues Image mit Docker

In diesem Artikel wird die Methode zum manuellen Erstellen eines neuen Images mit Docker vorgestellt und mit Ihnen geteilt. Die Details sind wie folgt:

Vorhandene lokale Bilder anzeigen:

[root@docker ~]# Docker-Bilder
REPOSITORY TAG BILD ID ERSTELLT GRÖSSE
nginx latest c59f17fe53b0 vor 4 Tagen 108 MB
Ubuntu aktuell 747cb2d60bbe vor 3 Wochen 122 MB
centos latest 196e0ce0c9fb vor 6 Wochen 197MB

Verwenden Sie nun das Basisimage centos, um manuell einen darauf basierenden Webdienst zu erstellen. Hier verwenden wir nginx

Starten Sie einen Container und geben Sie ihn ein:

[root@docker ~]# docker run -it --name=web centos /bin/bash
[root@bab3b6991467 /]#

Installieren Sie dann den Nginx-Dienst im Container:

[root@bab3b6991467 /]# cd /usr/local/src/
[root@bab3b6991467 src]# yum installiere wget vim

Hier verwenden wir die Kompilierung, um nginx zu installieren. Laden Sie also das nginx-Quellpaket herunter und installieren Sie die Kompilierungsumgebung:

[root@bab3b6991467 src]# wget http://nginx.org/download/nginx-1.12.2.tar.gz

Kompilierungsumgebung:

[root@bab3b6991467 src]# yum installiere gcc gcc-c++ glibc make autoconf openssl openssl-devel

Installieren Sie einige Abhängigkeitspakete von nginx:

[root@bab3b6991467 src]# yum installiere libxslt-devel -y gd gd-devel GeoIP GeoIP-devel pcre pcre-devel

Führen Sie anschließend die Installation aus:

[root@bab3b6991467 src]# ll
insgesamt 960
-rw-r--r--. 1 root root 981687 Okt 17 13:20 nginx-1.12.2.tar.gz
[root@bab3b6991467 src]# tar xf nginx-1.12.2.tar.gz 
[root@bab3b6991467 src]# cd nginx-1.12.2
[root@bab3b6991467 nginx-1.12.2]# ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --mit-file-aio --mit-http_ssl_modul --mit-http_realip_modul --mit-http_addition_modul --mit-http_xslt_modul --mit-http_image_filter_modul --mit-http_geoip_modul --mit-http_sub_modul --mit-http_dav_modul --mit-http_flv_modul --mit-http_mp4_modul --mit-http_gunzip_modul --mit-http_gzip_static_modul --mit-http_auth_request_modul --mit-http_random_index_modul --mit-http_secure_link_modul --mit-http_degradation_modul --mit-http_stub_status_modul

Erstellen Sie die erforderlichen Benutzer:

Benutzeradd -M -s /sbin/nologin nginx

Weiter kompilieren:

machen && machen installieren
chown -R nginx:nginx /usr/local/nginx/

Hier müssen wir einen Parameter des Nginx-Befehls einführen:

[root@bab3b6991467 ~]# /usr/local/nginx/sbin/nginx -h 
  -g-Direktiven: globale Direktiven aus der Konfigurationsdatei setzen

-g: Anweisungen für die nginx-Konfigurationsdatei festlegen

Verlassen Sie nun den Container und kehren Sie zum Hostcomputer zurück

[root@bab3b6991467 ~]# beenden
Ausfahrt

Überprüfen Sie den Status des Containers zu diesem Zeitpunkt:

[root@docker ~]# docker ps -a
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
bab3b6991467 centos "/bin/bash" vor 37 Minuten Beendet (0) vor 21 Sekunden Web

Mit Docker Diff können Sie sehen, welche Änderungen am Container vorgenommen wurden. Da es zu viele Ausgaben gibt, werden diese hier nicht angezeigt.

Verwenden Sie Docker Commit, um dem Webcontainer eine Ebene in einem neuen Image hinzuzufügen:

[root@docker ~]# docker commit --help
  Verwendung: Docker-Commit [OPTIONEN] CONTAINER [REPOSITORY[:TAG]]
  Erstellen Sie ein neues Image aus den Änderungen eines Containers

  -m, --message string Commit-Nachricht
  -a, --author Zeichenfolge Autor (z. B. „John Hannibal Smith <[email protected]>“)

Beginnen Sie jetzt mit dem Commit:

[root@docker ~]# docker commit -m "nginx auf centos kompilieren" web wadeson/centos_nginx:v1
sha256:210a202d37b8d2c31155c29adf0c7c0b49cfab7ff38234109919de7f4e76d1de

Sehen Sie sich das lokale Bild an:

[root@docker ~]# Docker-Bilder
REPOSITORY TAG BILD ID ERSTELLT GRÖSSE
wadeson/centos_nginx v1 210a202d37b8 vor 33 Sekunden 464 MB
nginx latest c59f17fe53b0 vor 4 Tagen 108 MB
Ubuntu aktuell 747cb2d60bbe vor 3 Wochen 122 MB
centos latest 196e0ce0c9fb vor 6 Wochen 197MB 

Sie können das neue Image sehen, das gerade von Docker übernommen wurde. Starten Sie nun einen Container aus diesem Image, um den Nginx-Dienst bereitzustellen:

[root@docker ~]# docker run -d -p80:80 wadeson/centos_nginx:v1 /usr/local/nginx/sbin/nginx -g "Daemon aus;"
c12669357e2b09a05a396ac480a04dd1956303b784f894b615d4edb889a737ab

Überprüfen Sie anschließend den Container:

[root@docker ~]# docker ps -l
CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN
c12669357e2b wadeson/centos_nginx:v1 "/usr/local/nginx/..." vor 41 Sekunden Aktiv seit 40 Sekunden 0.0.0.0:80->80/tcp thirsty_murdock

Sie können sehen, dass der Nginx-Dienst gestartet wurde. Besuchen Sie ihn also:

Der gesamte manuelle Build war also erfolgreich

Hier einige Erklärungen zu den obigen Befehlen:

docker run -d -p80:80 wadeson/centos_nginx:v1 /usr/local/nginx/sbin/nginx -g "Daemon aus;"

Die später ausgeführten Befehle richten sich alle an den Container. Da keine Umgebungsvariablen gesetzt sind, wird der vollständige Pfad verwendet. Der Parameter nginx -g bedeutet, dass Sie von außen Anweisungen in die nginx-Konfigurationsdatei einfügen können. Daemon off bedeutet, dass der nginx-Dienst nicht im Backend, sondern im Vordergrund ausgeführt wird (der Dienst im Container muss im Vordergrund ausgeführt werden).

Verwenden Sie Docker Top, um den laufenden Prozess des Containers anzuzeigen:

[root@docker ~]# docker top c12669357e2b
UID PID PPID C STIME TTY ZEIT CMD
root 35468 35451 0 02:55? 00:00:00 nginx: Masterprozess /usr/local/nginx/sbin/nginx -g Daemon aus;
1000 35489 35468 0 02:55 ? 00:00:00 nginx: Arbeitsprozess

Verwenden Sie Docker Exec, um den Container aufzurufen:

[root@docker ~]# docker exec -it c12669357e2b /bin/bash
[root@c12669357e2b /]# ps -ef
UID PID PPID C STIME TTY ZEIT CMD
root 1 0 0 06:55 ? 00:00:00 nginx: Masterprozess /usr/local/nginx/sbin/nginx -g Daemon aus;
nginx 5 1 0 06:55 ? 00:00:00 nginx: Arbeitsprozess
root 6 0 1 07:01 pts/0 00:00:00 /bin/bash
Wurzel 20 6 0 07:01 pts/0 00:00:00 ps -ef

Mit Strg+P+Q wird der Container in den Hintergrund verschoben, anstatt sofort beendet zu werden.

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:
  • Eine detaillierte Einführung in die Dockerfile-Image-Erstellungsdatei und verwandte Befehle in Docker
  • Jenkins erstellt Docker-Image-Beispiel
  • So erstellen Sie ein Docker-Basisimage von Grund auf
  • So erstellen Sie mit Docker in mehreren Schritten ein Dubbo-Admin-Image
  • Implementierung der mehrstufigen Docker-Image-Erstellung
  • So verwenden Sie Dockerfile zum Erstellen von Images
  • Analyse zweier Methoden zum Erstellen von Docker-Images
  • So erstellen Sie ein neues Image basierend auf einem vorhandenen Image in Docker
  • So verwenden Sie Dockerfile zum Erstellen von Images in Docker

<<:  Beispiel für die Generierung von Zufallszahlen und die Verkettung von Zeichenfolgen in MySQL

>>:  Realisierung des Karusselleffekts basierend auf jQuery

Artikel empfehlen

Informationen zur ROS2-Installation und zur Verwendung der Docker-Umgebung

Inhaltsverzeichnis Warum Docker verwenden? Docker...

JavaScript zum Erreichen aller oder umgekehrter Auswahlfunktionen

In diesem Artikel wird der spezifische JavaScript...

Anzeigemodus von Elementen in CSS

In CSS werden Element-Tags entsprechend den unter...

Verständnis und Lösungen für 1px-Linien in der mobilen Entwicklung

Gründe, warum die 1px-Linie dicker wird Wenn wir ...

Eine einfache und eingehende Studie zu Async und Await in JavaScript

Inhaltsverzeichnis 1. Einleitung 2. Detaillierte ...

Tutorial zur Installation der mysql5.7.36-Datenbank in einer Linux-Umgebung

Download-Adresse: https://dev.mysql.com/downloads...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.12

Das Download- und Installationstutorial für MySQL...

So aktivieren Sie die Protokollfunktion für langsame Abfragen in MySQL

Das MySQL-Protokoll für langsame Abfragen ist seh...