1. ProjektbeschreibungVerwenden Sie den Docker-Container, um durch Kompilieren und Installieren ein Nginx-Image basierend auf dem CentOS-Image, dem MySQL-Image und dem PHP-Image zu erstellen, und verwenden Sie schließlich den Netzwerkmodus des Containers, um beim Starten des Containers über das Image auf die PHP-Testseite zuzugreifen. 2. Nginx-Bildproduktion//Ziehen Sie das CentOS-Image [root@Docker ~]# docker pull centos Standard-Tag verwenden: latest neuestes: Aus Bibliothek/CentOS ziehen a1d0c7532777: Ziehen abgeschlossen Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177 Status: Neueres Image für Centos:latest heruntergeladen docker.io/library/centos:latest [root@localhost ~]# Docker-Bilder REPOSITORY TAG BILD ID ERSTELLT GRÖSSE centos latest 5d0da3dc9764 vor 2 Monaten 231MB // CentOS-Image ausführen [root@localhost ~]# docker run -it --name nginx 5d0da3dc9764 /bin/bash [root@03ca6bdc0374 /]# // Übertragen Sie das Nginx-Installationspaket in den Container [root@localhost ~]# docker cp /usr/src/nginx-1.20.1.tar.gz 03ca6bdc0374:/usr/src/ // Nginx-Konto erstellen [root@03ca6bdc0374 /]# useradd -r -M -s /sbin/nologin nginx //Abhängige Pakete installieren [root@03ca6bdc0374 /]# yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++ make // Erstellen Sie ein Verzeichnis zum Speichern von Nginx-Protokollen [root@03ca6bdc0374 /]# mkdir -p /var/log/nginx [root@03ca6bdc0374 /]# chown -R nginx.nginx /var/log/nginx/ // Entpacken Sie das Nginx-Paket zur Kompilierung und Installation [root@03ca6bdc0374 /]# cd /usr/src/ [root@03ca6bdc0374 quelle]# ls Debuggen Sie den Kernel nginx-1.20.1.tar.gz [root@03ca6bdc0374 src]# tar xf nginx-1.20.1.tar.gz [root@03ca6bdc0374 src]# cd nginx-1.20.1 [root@03ca6bdc0374 nginx-1.20.1]# ./konfigurieren \ --prefix=/usr/local/nginx \ --Benutzer=nginx \ --group=nginx \ --mit-debug \ --mit-http_ssl_module \ --mit-http_realip_module \ --mit-http_image_filter_module \ --mit-http_gunzip_module \ --mit-http_gzip_static_module \ --mit-http_stub_status_module \ --http-log-path=/var/log/nginx/access.log \ --error-log-path=/var/log/nginx/error.log [root@03ca6bdc0374 nginx-1.20.1]# make && make install // Umgebungsvariablen festlegen [root@03ca6bdc0374 nginx-1.20.1]# echo 'export PATH=/usr/local/nginx/sbin:$PATH' > /etc/profile.d/nginx.sh [root@03ca6bdc0374 nginx-1.20.1]# Quelle /etc/profile.d/nginx.sh // Den Abhörport anzeigen [root@03ca6bdc0374 nginx-1.20.1]# nginx [root@03ca6bdc0374 nginx-1.20.1]# ss -antl Status Recv-Q Send-Q Lokale Adresse:Port Peer-Adresse:Port Prozess LISTEN 0 128 0.0.0.0:80 0.0.0.0:* [root@localhost ~]# curl 172.17.0.2 <!DOCTYPE html> <html> <Kopf> <title>Willkommen bei nginx!</title> <Stil> Körper { Breite: 35em; Rand: 0 automatisch; Schriftfamilie: Tahoma, Verdana, Arial, serifenlos; } </Stil> </Kopf> <Text> <h1>Willkommen bei nginx!</h1> <p>Wenn Sie diese Seite sehen, ist der nginx-Webserver erfolgreich installiert und funktioniert. Weitere Konfiguration ist erforderlich.</p> <p>Online-Dokumentation und Support finden Sie unter <a href="http://nginx.org/" rel="external nofollow" >nginx.org</a>.<br/> Kommerzieller Support ist verfügbar unter <a href="http://nginx.com/" rel="external nofollow" >nginx.com</a>.</p> <p><em>Danke, dass Sie nginx verwenden.</em></p> </body> </html> // Ändern Sie die Konfigurationsdatei [root@03ca6bdc0374 nginx-1.20.1]# vim /usr/local/nginx/conf/nginx.conf ...... http { 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"'; #access_log Protokolle/access.log Haupt; sendfile an; #tcp_nopush ein; #keepalive_timeout 0; KeepAlive-Timeout 65; #gzip ein; Server { hören Sie 80; Servername localhost; #Zeichensatz koi8-r; #access_log Protokolle/Host.access.log Haupt; Standort / { Stamm-HTML; index index.php index.html index.htm; // index.php hinzufügen } ...... Standort ~ \.php$ { root /var/www/html; // Verzeichnis der PHP-Testseite fastcgi_pass 127.0.0.1:9000; // Bei der Arbeit sollte dies in die Adresse des PHP-Servers fastcgi_index index.php geändert werden; fastcgi_param SCRIPT_FILENAME $Dokumentenstammsatz$fastcgi_script_name; fastcgi_params einschließen; } ...... daemon off; // Bis zum Ende schreiben // Konfigurationsdatei neu laden [root@03ca6bdc0374 nginx-1.20.1]# nginx -s reload [root@03ca6bdc0374 nginx-1.20.1]# ss -antl Status Recv-Q Send-Q Lokale Adresse:Port Peer-Adresse:Port Prozess LISTEN 0 128 0.0.0.0:80 0.0.0.0:* // Nginx-Image erstellen [root@localhost ~]# docker commit -a '[email protected]' -c 'CMD ["/usr/local/nginx/sbin/nginx"]' -p 03ca6bdc0374 gaofan1225/nginx:v0.1 sha256:453bfb1a13ae0aeba38e2e26ebe03e09544aa2ea8b477e45e4fb8aa51fec3e92 [root@localhost ~]# Docker-Bilder REPOSITORY TAG BILD ID ERSTELLT GRÖSSE gaofan1225/nginx v0.1 453bfb1a13ae vor 16 Sekunden 575 MB centos latest 5d0da3dc9764 vor 2 Monaten 231MB 3. MySQL-Image-Erstellung// Centos-Image ausführen [root@localhost ~]# Docker-Images REPOSITORY TAG BILD ID ERSTELLT GRÖSSE gaofan1225/nginx v0.1 453bfb1a13ae vor 16 Sekunden 575 MB centos latest 5d0da3dc9764 vor 2 Monaten 231MB [root@localhost ~]# docker run -it --name mysql 5d0da3dc9764 /bin/bash [root@3ea39d4dfa8f /]# // Übertragen Sie das MySQL-Installationspaket in den Container [root@localhost ~]# docker cp /usr/src/mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz 9b6741a9ef22:/usr/src/ //Abhängige Pakete installieren [root@9b6741a9ef22 /]# yum -y install ncurses-devel openssl-devel openssl cmake mariadb-devel ncurses-compat-libs [root@9b6741a9ef22 /]# yum -y installiere libaio* [root@9b6741a9ef22 /]# yum -y installiere numactl.x86_64 // MySQL-Benutzer erstellen [root@9b6741a9ef22 /]# useradd -r -M -s /sbin/nologin mysql // Entpacken Sie das Installationspaket [root@9b6741a9ef22 /]# cd /usr/src/ [root@9b6741a9ef22 src]# ls Debuggen Sie Kernel mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz [root@9b6741a9ef22 src]# tar xf mysql-5.7.34-linux-glibc2.12-x86_64.tar.gz -C /usr/local/ // Erstelle einen Softlink und richte ihn für die ganze Schule ein [root@9b6741a9ef22 src]# cd /usr/local/ [root@9b6741a9ef22 lokal]# ls bin include libexec share usw. lib mysql-5.7.34-linux-glibc2.12-x86_64 src Spiele lib64 sbin [root@9b6741a9ef22 lokal]# ln -sv mysql-5.7.34-linux-glibc2.12-x86_64/mysql 'mysql' -> 'mysql-5.7.34-linux-glibc2.12-x86_64/' [root@9b6741a9ef22 lokal]# chown -R mysql.mysql /usr/local/mysql* // Umgebungsvariablen festlegen [root@9b6741a9ef22 local]# echo 'export PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh [root@9b6741a9ef22 lokal]# Quelle /etc/profile.d/mysql.sh [root@9b6741a9ef22 lokal]# echo $PATH /usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin // Erstellen Sie einen Softlink zur Header-Datei [root@9b6741a9ef22 local]# ln -s /usr/local/mysql/include /usr/include/mysql // Hilfedokument erstellen [root@9b6741a9ef22 local]# cat /etc/man_db.conf MANDATORY_MANPATH /usr/local/mysql/man // Bibliotheksdatei erstellen [root@9b6741a9ef22 local]# cat /etc/ld.so.conf.d/mysql.conf /usr/local/mysql/lib [root@9b6741a9ef22 lokal]# ldconfig // Erstellen Sie ein Datenspeicherverzeichnis [root@9b6741a9ef22 local]# mkdir -p /opt/data [root@9b6741a9ef22 lokal]# chown -R mysql.mysql /opt/data [root@9b6741a9ef22 lokal]# ls -l /opt/ gesamt 0 drwxr-xr-x. 2 mysql mysql 6 Dez 4 01:31 Daten // Initialisieren Sie die Datenbank [root@9b6741a9ef22 local]# /usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/opt/data/ // Konfigurationsdatei generieren [root@9b6741a9ef22 local]# cat > /etc/my.cnf <<EOF [mysqld] basedir = /usr/local/mysql Datenverzeichnis = /opt/data Socket = /tmp/mysql.sock Port = 3306 pid-Datei = /opt/data/mysql.pid Benutzer = MySQL Namensauflösung überspringen Ende der Laufzeit // MySQL-Startdienst konfigurieren [root@9b6741a9ef22 local]# sed -ri 's#^(basedir=).*#\1/usr/local/mysql#g' /usr/local/mysql/support-files/mysql.server [root@9b6741a9ef22 lokal]# sed -ri 's#^(datadir=).*#\1/opt/data#g' /usr/local/mysql/support-files/mysql.server // Starten Sie den MySQL-Dienst [root@9b6741a9ef22 local]# /usr/local/mysql/support-files/mysql.server start MySQL.Logging wird in „/opt/data/9b6741a9ef22.err“ gestartet. ERFOLG! [root@9b6741a9ef22 lokal]# ss -antl Status Recv-Q Send-Q Lokale Adresse:Port Peer-Adresse:Port Prozess HÖREN 0 80 *:3306 *:* // MySQL-Startskript schreiben [root@9b6741a9ef22 local]# cd / [root@9b6741a9ef22 /]# cat /start.sh #!/bin/sh /usr/local/mysql/support-files/mysql.server starten /bin/bash [root@9b6741a9ef22 /]# chmod +x /start.sh // MySQL-Image erstellen [root@localhost ~]# docker commit -a '[email protected]' -c 'CMD ["/bin/bash","/start.sh"]' -p 9b6741a9ef22 gaofan1225/mysql:v0.1 sha256:7abe6fc819127b8ef3d9ac0ea3d24aadda1b189d739e4b53416530fc79db795f [root@localhost ~]# Docker-Bilder REPOSITORY TAG BILD ID ERSTELLT GRÖSSE gaofan1225/mysql v0.1 7abe6fc81912 vor 10 Sekunden 3,81 GB gaofan1225/nginx v0.1 453bfb1a13ae vor 17 Minuten 575 MB centos latest 5d0da3dc9764 vor 2 Monaten 231MB 4. PHP-Bilderstellung// Centos-Image ausführen [root@localhost ~]# Docker-Images REPOSITORY TAG BILD ID ERSTELLT GRÖSSE gaofan1225/mysql v0.1 7abe6fc81912 vor 10 Sekunden 3,81 GB gaofan1225/nginx v0.1 453bfb1a13ae vor 17 Minuten 575 MB centos latest 5d0da3dc9764 vor 2 Monaten 231MB [root@localhost ~]# docker run -it --name php 5d0da3dc9764 [root@c6882394804e /]# // Übertragen Sie das PHP-Installationspaket und die abhängigen Pakete in den Container [root@localhost ~]# docker cp /usr/src/php-8.0.12.tar.gz c6882394804e:/usr/src/ [root@localhost ~]# docker cp /usr/src/oniguruma-devel-6.8.2-2.el8.x86_64.rpm c6882394804e:/usr/src/ // Epel-Quellcode und Abhängigkeitspakete herunterladen [root@c6882394804e /]# yum -y install epel-release [root@c6882394804e /]# yum -y installiere libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libicu-devel libjpeg libjpeg-devel libpng libpng-devel openldap-devel pcre-devel freetype freetype-devel gmp gmp-devel libmcrypt libmcrypt-devel readline readline-devel libxslt libxslt-devel mhash mhash-devel php-mysqlnd libzip-devel libsqlite3x libsqlite3x-devel oniguruma libzip-devel gcc gcc-c++ make [root@c6882394804e /]# yum -y installiere libcurl-devel // Entpacken Sie das PHP-Installationspaket zur Kompilierung und Installation [root@c6882394804e /]# cd /usr/src/ [root@c6882394804e src]# ls debug-oniguruma-devel-6.8.2-2.el8.x86_64.rpm Kernel php-8.0.12.tar.gz [root@c6882394804e src]# yum -y installiere oniguruma-devel-6.8.2-2.el8.x86_64.rpm [root@c6882394804e src]# tar xf php-8.0.12.tar.gz [root@c6882394804e src]# cd php-8.0.12 [root@c6882394804e php-8.0.12]# ./configure --prefix=/usr/local/php8 \ --with-config-file-path=/etc \ --enable-fpm \ --disable-debug \ --disable-rpath \ --enable-shared \ --enable-soap \ --mit-openssl \ --enable-bcmath \ --mit-iconv \ --mit-bz2 \ --enable-calendar \ --mit-curl \ --enable-exif \ --enable-ftp \ --enable-gd \ --mit-jpeg \ --with-zlib-dir \ --mit-freetype \ --mit-gettext \ --enable-mbstring \ --enable-pdo \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \ --mit-readline \ --enable-shmop \ --enable-simplexml \ --enable-sockets \ --mit-zip \ --enable-mysqlnd-compression-support \ --mit-Birne \ --enable-pcntl \ --enable-posix [root@c6882394804e php-8.0.12]# make && make install // Umgebungsvariablen festlegen [root@c6882394804e php-8.0.12]# echo 'export PATH=/usr/local/php8/bin:$PATH' > /etc/profile.d/php.sh [root@c6882394804e php-8.0.12]# Quelle /etc/profile.d/php.sh // php-fpm konfigurieren [root@c6882394804e php-8.0.12]# cp php.ini-Produktion /etc/php.ini cp: '/etc/php.ini' überschreiben? y [root@c6882394804e php-8.0.12]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm [root@c6882394804e php-8.0.12]# chmod +x /etc/rc.d/init.d/php-fpm [root@c6882394804e php-8.0.12]# cd /usr/local/php8/etc/ [root@c6882394804e usw.]# cp php-fpm.conf.default php-fpm.conf [root@c6882394804e usw.]# cd php-fpm.d/ [root@c6882394804e php-fpm.d]# cp www.conf.default www.conf // Den Abhörport anzeigen [root@c6882394804e php-fpm.d]# /usr/local/php8/sbin/php-fpm [root@c6882394804e php-fpm.d]# ss -antl Status Recv-Q Send-Q Lokale Adresse:Port Peer-Adresse:Port Prozess LISTEN 0 128 127.0.0.1:9000 0.0.0.0:* // Schreiben Sie das Startskript [root@c6882394804e php-fpm.d]# cd / [root@c6882394804e /]# cat /start.sh #!/bin/sh /usr/local/php8/sbin/php-fpm /bin/bash [root@c6882394804e /]# chmod +x /start.sh // Testseite erstellen [root@c6882394804e /]# mkdir -p /var/www/html [root@c6882394804e /]# cd /var/www/html/ [root@c6882394804e html]# vi index.php [root@c6882394804e html]# Katze index.php <?php phpinfo(); ?> // Erstellen Sie ein PHP-Image [root@localhost ~]# docker commit -a '[email protected]' -c 'CMD ["/bin/bash","/start.sh"]' -p c6882394804e gaofan1225/php:v0.1 sha256:9bb6f6ec5b7cff9b3e92bc3b2f8eb2542c963643e74642be7eace465bc2225f9 [root@localhost ~]# Docker-Bilder REPOSITORY TAG BILD ID ERSTELLT GRÖSSE gaofan1225/php v0.1 9bb6f6ec5b7c vor 15 Sekunden 1,53 GB gaofan1225/mysql v0.1 7abe6fc81912 vor 2 Stunden 3,81 GB gaofan1225/nginx v0.1 453bfb1a13ae vor 2 Stunden 575 MB centos latest 5d0da3dc9764 vor 2 Monaten 231MB 5. Führen Sie LNMP ausVerwenden Sie den Containermodus-Netzwerkmodus [root@localhost ~]# docker ps -a CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN // Starten Sie den Nginx-Container [root@localhost ~]# docker run -dit --name nginx -p 80:80 453bfb1a13ae a8ff680fc2bb61118d10ab1926fffed9c4975f72834d1628bf0cfff851bd7935 [root@localhost ~]# docker ps CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN a8ff680fc2bb 453bfb1a13ae "/usr/local/nginx/sb..." vor 16 Sekunden. Vor 14 Sekunden aktiv. 0.0.0.0:80->80/tcp, :::80->80/tcp nginx [root@localhost ~]# docker exec -it a8ff680fc2bb /bin/bash [root@a8ff680fc2bb /]# ss -antl Status Recv-Q Send-Q Lokale Adresse:Port Peer-Adresse:Port Prozess LISTEN 0 128 0.0.0.0:80 0.0.0.0:* // Starten Sie den MySQL-Container [root@localhost ~]# docker run -dit --name mysql --network container:a8ff680fc2bb 7abe6fc81912 e776f9e93c6ca0d8fba53957cfa9e85105913fcbe53a9400c2657127eb049c2d [root@localhost ~]# docker ps CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN e776f9e93c6c 7abe6fc81912 "/bin/bash /start.sh" vor 9 Sekunden Up 8 Sekunden mysql a8ff680fc2bb 453bfb1a13ae "/usr/local/nginx/sb..." vor 2 Minuten Vor 2 Minuten 0.0.0.0:80->80/tcp, :::80->80/tcp nginx [root@localhost ~]# docker exec -it e776f9e93c6c /bin/bash [root@a8ff680fc2bb /]# ss -antl Status Recv-Q Send-Q Lokale Adresse:Port Peer-Adresse:Port Prozess LISTEN 0 128 0.0.0.0:80 0.0.0.0:* HÖREN 0 80 *:3306 *:* // Starten Sie den PHP-Container [root@localhost ~]# docker run -dit --name php --network container:a8ff680fc2bb 9bb6f6ec5b7c e80155914f858910ffb678a7d294e68804f735bf9a52efd21a036f7abee23bbe [root@localhost ~]# docker ps CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN e80155914f85 9bb6f6ec5b7c "/bin/bash /start.sh" vor 4 Sekunden Up 3 Sekunden php e776f9e93c6c 7abe6fc81912 "/bin/bash /start.sh" Vor etwa einer Minute Up Vor etwa einer Minute mysql a8ff680fc2bb 453bfb1a13ae "/usr/local/nginx/sb..." vor 4 Minuten Vor 4 Minuten 0.0.0.0:80->80/tcp, :::80->80/tcp nginx [root@localhost ~]# docker exec -it e80155914f85 /bin/bash [root@a8ff680fc2bb /]# ss -antl Status Recv-Q Send-Q Lokale Adresse:Port Peer-Adresse:Port Prozess LISTEN 0 128 127.0.0.1:9000 0.0.0.0:* LISTEN 0 128 0.0.0.0:80 0.0.0.0:* HÖREN 0 80 *:3306 *:* 6. WebansichtDies ist das Ende dieses Artikels über das Implementierungsbeispiel zum Kompilieren von LNMP in einem Docker-Container. Weitere relevante Inhalte zum Kompilieren von LNMP in Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Eine kurze Diskussion über die Anwendung von HTML-Webseiten-Tabellenstruktur-Markup
>>: Implementierung des Vue-Top-Tags-Browserverlaufs
Warum optimieren: Beim Start des eigentlichen Pro...
#mysql -uroot -p Passwort eingeben mysql> voll...
Inhaltsverzeichnis Einführung Protokollklassifizi...
Da ich dieses Plugin beim Schreiben einer Demo ve...
Inhaltsverzeichnis vue2.x vue3.x Verwendung des T...
Schritt 1: Geben Sie das Verzeichnis ein: cd /etc...
Meine ursprüngliche Absicht war, die $notify-Bena...
Vorwort Überprüfung und Zusammenfassung von REM-A...
Panther begann als Anfänger und ich bin immer noc...
Vorwort Vor einiger Zeit ist bei mir ein MySQL-De...
Inhaltsverzeichnis Fallstricke bei Zeitstempelver...
Die Standard-MySQL-Version unter dem Alibaba Clou...
px (Pixel) Ich glaube, jeder ist mit dem Begriff ...
Im Allgemeinen können wir beim Herunterladen von ...
Vue-Komponenten sind verbunden, daher ist es unve...