Einführung in allgemeine Dockerfile-Anweisungen
Verwenden Sie Dockerfile, um ein einfaches nginxWeb-Image zu schreiben#Aktivieren Sie zuerst die IPv4-Weiterleitung echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf sysctl -p net.ipv4.ip_forward = 1 #Erstellen Sie das Nginx-Spiegelverzeichnis mkdir -p dockerfile/lib/centos/nginx cd dockerfile/lib/centos/nginx #Dockerfile-Datei vorbereiten vim Dockerfile FROM centos:7 #Auf welcher Basis basiert das neu erstellte Image? (Das erstellte Nginx basiert auf Centos7 und basiert auf der Systemunterstützung von Centos7. Wenn kein Image vorhanden ist, wird es automatisch heruntergeladen.) MAINTAINER wk #Image-Produzent RUN yum install -y gcc gcc-c++ make openssl-devel pcre-devel #Führen Sie beim Erstellen von Images Shell-Befehle aus, yum installiert die Abhängigkeitspakete von nginx ADD nginx-1.12.1.tar.gz /tmp #Kopieren Sie Dateien oder Verzeichnisse in das Image und dekomprimieren Sie komprimierte Dateien automatisch RUN cd /tmp/nginx-1.12.1 && \ #Führen Sie Shell-Befehle aus, um nginx zu kompilieren und zu installieren, make -j, um mit 2 Threads zu kompilieren./configure --prefix=/usr/local/nginx && \ make -j 2 && \ installieren RUN rm -rf /tmp/nginx-1.12.1* && yum clean all #Nginx-Quellpaket löschen und Yum-Cache leeren, um den Container so leicht wie möglich zu machen. COPY nginx.conf /usr/local/nginx/conf #Dateien oder Verzeichnisse in das Image kopieren. WORKDIR /usr/local/nginx #Arbeitsverzeichnis für RUN, CMD, ENTRYPOINT, COPY und ADD festlegen (das Verzeichnis angeben, das beim Aufrufen des Containers standardmäßig gewechselt wird). EXPOSE 80 #Deklarieren Sie die Portnummer des Containers CMD ["./sbin/nginx", "-g", "daemon off;"] #Der Shell-Befehl, der beim Ausführen des Containers -g daemon off ausgeführt wird, startet nginx nicht als Daemon-Prozess, d. h. startet nginx nicht im Hintergrund #Kopieren Sie die vorbereiteten Konfigurationsdateien nginx-1.12.1.tar.gz und nginx.conf in das aktuelle Verzeichnis ls Docker-Datei nginx-1.12.1.tar.gz nginx.conf #Erstellen Sie ein Docker-Image basierend auf Nginx Docker Build -t nginx:1. #nginx Hauptkonfigurationsdatei cat conf/nginx.conf Benutzer root; Arbeiterprozesse automatisch; error_log Protokolle/error.log Informationen; pid-Protokolle/nginx.pid; Ereignisse { verwenden Sie epoll; } 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; KeepAlive-Timeout 65; Server { hören Sie 80; Servername localhost; Stamm-HTML; Index Index.html Index.php; Standort ~ \.php$ { Stamm-HTML; fastcgi_pass lnmp_php:9000; #lnmp_ph ist der Hostname des PHP-Containers, der der IP-Adresse von PHP entspricht fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_params einschließen; } } } Erstellen Sie ein PHP-Website-Plattformbild#Erstellen Sie ein Spiegelverzeichnis für PHP mkdir -p /root/dockerfile/lib/centos/php cd /root/dockerfile/lib/centos/php #Dockerfile-Datei vorbereiten vim Dockerfile FROM centos:7 #Das neue Image basiert auf dem Centos7-Image MAINTAINER wk #Der neue Image-Produzent RUN yum install -y gcc gcc-c++ make gd-devel libxml2-devel libcurl-devel libjpeg-devel libpng-devel openssl-devel #Shell ausführen, um Abhängigkeiten zu installieren ADD php-5.6.31.tar.gz /tmp/ #Installationspaket in /tmp ablegen und automatisch dekomprimieren RUN cd /tmp/php-5.6.31 && \ #PHP kompilieren und installieren, PHP-Startdatei kopieren und Konfiguration der Startdatei ändern./configure --prefix=/usr/local/php \ --with-config-file-path=/usr/local/php/etc \ --mit-mysql --mit-mysqli \ --mit-openssl --mit-zlib --mit-curl --mit-gd \ --with-jpeg-dir --with-png-dir --with-iconv \ --enable-fpm --enable-zip --enable-mbstring && \ make -j 4 && \ make install && \ cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf && \ sed -i "s/127.0.0.1/0.0.0.0/" /usr/local/php/etc/php-fpm.conf && \ sed -i "21a \daemonize = no" /usr/local/php/etc/php-fpm.conf COPY php.ini /usr/local/php/etc #Kopieren Sie die Hauptkonfigurationsdatei von PHP RUN rm -rf /tmp/php-5.6.31* && yum clean all #Löschen Sie nicht verwendete Dateien und leeren Sie den Yum-Cache, um den Container so leicht wie möglich zu machen WORKDIR /usr/local/php #Geben Sie den Container ein, der auch der Speicherort des PHP-Programms ist EXPOSE 9000 #Öffnen Sie Port 9000 CMD ["./sbin/php-fpm", "-c", "/usr/local/php/etc/php-fpm.conf"] #Öffnen Sie php -c, um die Hauptkonfigurationsdatei anzugeben. #Kopieren Sie die vorbereitete Datei php.ini und php-5.6.31.tar.gz in das aktuelle Verzeichnis ls Docker-Datei php-5.6.31.tar.gz php.ini #Erstellen Sie ein Docker-Image basierend auf PHP Docker Build -t PHP:1. Erstellen Sie die nginx-php-Netzwerkumgebung und starten Sie den Container#Erstellen Sie ein Netzwerk namens lnmpdocker network create lnmp dad428646d8f8278f36b80b3b960493aee8be1960bb1f505bfeebc97022b6385 Docker-Netzwerk ls NETZWERK-ID-NAME TREIBER-UMFANG 0604a9338e1b Brücke Brücke lokal b68e9da0b1e6 Host Host lokal dad428646d8f lnmp Brücke lokal cf4b2d0b4394 keine null lokal #Erstellen Sie ein Mount-Verzeichnis für die nginx-php-Webseite mkdir -p /www #Starten Sie den PHP-Container docker run -dit --name lnmp-php --net lnmp --mount type=bind,src=/www,dst=/usr/local/nginx/html php:1 5b49fc160f9e42364238a937149bbb475036b8a28feddf0fe05c1e70b414a151 #Starten Sie den Nginx-Container docker run -dit --name lnmp-nginx --net lnmp -p 8888:80 --mount type=bind,src=/www,dst=/usr/local/nginx/html nginx:1 7ce4d14cf756859e814186090a12b770916f150ed2a5fab2f0dc6ba8c347aab8 Docker ps -a CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN 7ce4d14cf756 nginx:1 "./sbin/nginx -g 'da..." vor 16 Sekunden Vor 15 Sekunden aktiv 0.0.0.0:8888->80/tcp lnmp-nginx 5b49fc160f9e php:1 "./sbin/php-fpm -c /…" vor 6 Minuten Up 6 Minuten 9000/tcp lnmp-php #Erstellen Sie eine Testseite php.info echo "<?php phpinfo();?>" > /www/index.php Zugriffstest über den Browser Erstellen Sie ein JAVA-Website-Umgebungsbild#Erstellen Sie ein Speicherverzeichnis für den Build des Java-Images mkdir -p dockerfile/lib/centos/tomcat cd dockerfile/lib/centos/tomcat #Kopieren Sie das erforderliche Softwarepaket in das aktuelle Verzeichnis ls apache-tomcat-8.0.46.tar.gz Docker-Datei jdk-8u45-linux-x64.tar.gz server.xml #Dockerfile vorbereiten vim Docker-Datei VON centos:7 WARTUNGSARBEITER Woche ADD jdk-8u45-linux-x64.tar.gz /usr/local #JavaJDK-Umgebung erstellen ENV JAVA_HOME /usr/local/jdk1.8.0_45 #Erzwingen der Generierung einer Umgebungsvariablen ADD apache-tomcat-8.0.46.tar.gz /usr/local #Tomcat entpacken COPY server.xml /usr/local/apache-tomcat-8.0.46/conf #Konfigurationsdatei kopierenRUN rm -f /usr/local/*.tar.gz #Installationspaket löschen container lightweight WORKDIR /usr/local/apache-tomcat-8.0.46 #Arbeitsverzeichnis Geben Sie das Verzeichnis ein, in dem sich der Container befindet EXPOSE 8080 #Port zuordnen ENTRYPOINT ["./bin/catalina.sh", "run"] #Catalina verwenden. sh run startet Tomcat im Vordergrund #Erstellen Sie einen Spiegel basierend auf Tomcat docker build -t tomcat:1 . #Erstellen Sie ein Web-Mount-Verzeichnis mkdir -p /app #Starten Sie den Tomcat-Containerprozess docker run -dit --name=tomcat -p 8080:8080 --network lnmp --mount type=bind,src=/app/,dst=/usr/local/apache-tomcat-8.0.46/webapps tomcat:1 Docker ps -a CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN 15eca19688ca tomcat:1 "./bin/catalina.sh r..." vor 17 Sekunden Aktiv seit 16 Sekunden 0.0.0.0:8080->8080/tcp tomcat 7ce4d14cf756 nginx:1 "./sbin/nginx -g 'da..." vor 2 Stunden Aktiv Vor etwa einer Stunde 0.0.0.0:8888->80/tcp lnmp-nginx 5b49fc160f9e php:1 "./sbin/php-fpm -c /…" vor 2 Stunden Up Ungefähr eine Stunde 9000/tcp lnmp_php #Erstellen Sie eine Website-Testseite mkdir /app/ROOT vim /app/ROOT/index.html dddddddddddddddd Verpackung und Bereitstellung des gesamten Projekts mit einem KlickDocker Compose-Nutzung Compose ist ein in Python geschriebenes Tool zum Definieren und Verwalten mehrerer Container. Verwenden Sie Compose-Konfigurationsdateien, um die Architektur mehrerer Containeranwendungen zu beschreiben, z. B. welche Bilder verwendet werden sollen, Datenmengen, Netzwerke, zugeordnete Ports usw. Anschließend verwaltet ein Befehl alle Dienste, z. B. Starten, Stoppen, Neustarten usw. Installieren Entpacken Sie docker-compose-linux-x86_64.zip Archiv: docker-compose-linux-x86_64.zip aufblasen: Docker-Compose ich werde docker-compose -rw-r--r-- 1 root root 8858496 31. August 2017 docker-compose chmod +x Docker-Compose mv docker-compose /usr/bin/ YAML-Dateiformat und Vorsichtsmaßnahmen beim Schreiben YAML ist ein Datenserialisierungsformat mit einer sehr intuitiven Auszeichnungssprache und hoher Lesbarkeit. Ähnlich wie bei der Datenbeschreibungssprache XML ist die Syntax viel einfacher als bei XML YAML-Datenstrukturen werden durch Einrückungen gekennzeichnet, aufeinanderfolgende Elemente durch Minuszeichen, Schlüssel-Wert-Paare durch Doppelpunkte getrennt, Arrays in eckige Klammern und Hashes in geschweifte Klammern. Hinweise zum YAML-Dateiformat:
Gemeinsame Felder in Konfigurationsdateien
Allgemeine Befehle |
Felder | beschreiben |
---|---|
bauen | Erstellen Sie den Dienst neu |
ps | Container auflisten |
hoch | Erstellen und Starten eines Containers |
Ausführung | Ausführen von Befehlen im Container |
Skala | Geben Sie die Anzahl der zu startenden Servicecontainer an |
Spitze | Containerprozesse anzeigen |
Protokolle | Containerausgabe anzeigen |
runter | Löschen von Containern, Netzwerken, Volumes und Images |
Stopp/Start/Neustart | Dienste stoppen/starten/neu starten |
Bereitstellung der LNMP-Website-Plattform mit nur einem Klick
#Den compose_lnmp-Paketbaum anzeigen /root/compose_lnmp/ /root/compose_lnmp/ ├── docker-compose.yml #docker-compose Startschnittstellendatei ├── mysql │ ├── conf │ │ └── my.cnf #mysql-Konfigurationsdatei│ └── data #einzubindendes mysql-Datenverzeichnis├── nginx │ ├── Dockerfile #Konfigurationsdatei des Docker-Images von nginx anpassen│ ├── nginx-1.12.1.tar.gz #Quellcodepaket von nginx│ └── nginx.conf #Konfigurationsdatei von nginx├── php │ ├── Dockerfile #Docker-Image-Datei von PHP anpassen│ ├── php-5.6.31.tar.gz #PHP-Quellcodepaket│ └── php.ini #PHP-Konfigurationsdatei└── wwwroot #Webseitenverzeichnis└── index.php #Standard-Webseitendatei
vim docker-compose.yml #docker-compose-Startschnittstellendatei muss mit .yml enden. Er und ansbile sind beide in der Python-Version geschrieben: „3“ #Containerversion ist 3 Dienste: #Containerdienste haben das folgende nginx: #Nginx-Container-Hostname: nginx #Container-Hostname ist nginx build: #Geben Sie den Speicherort des Dockerfilecontexts an: ./nginx #Die Dockerfile-Datei befindet sich im Nginx-Verzeichnis unter dem aktuellen Pfaddockerfile: Dockerfile #Dockerfile-Dateiname: Dockerfile Ports: #Geben Sie den Mapping-Port-Host 81 an, der auf 80 abgebildet werden soll - 81:80 Netzwerke: #Geben Sie die Container-Netzwerkkarte in der lnmp-Bridge an - lnmp Volumes: #Mount ./wwwroot im aktuellen Verzeichnis in das Webverzeichnis des Containers nginx - ./wwwroot:/usr/local/nginx/html php: #Ähnlich wie nginx Hostname: php bauen: Kontext: ./php Dockerdatei: Dockerdatei Netzwerke: -lnmp Bände: - ./wwwroot:/usr/local/nginx/html MySQL: Hostname: MySQL image: mysql:5.6 #Laden Sie das Image herunter mysql5.6 Versionsports: -3306:3306 Netzwerke: -lnmp Volumes: #Mounten Sie die Hauptkonfigurationsdatei und Datendatei von MySQL - ./mysql/conf:/etc/mysql/conf.d - ./mysql/data:/var/lib/mysql Befehl: --character-set-server=utf8 #Führen Sie den Befehl aus und überschreiben Sie den Standardbefehl. Umgebung: #Fügen Sie die Umgebungsvariable MYSQL_ROOT_PASSWORD hinzu: 123456 MYSQL_DATABASE: WordPress MYSQL_USER: Benutzer MYSQL_PASSWORD: Benutzer123 Netzwerke: #Fügen Sie das Netzwerk lnmp hinzu und verweisen Sie unter den Netzwerken der obersten Ebene auf den Eintrag lnmp:
#Ein-Klick-Bereitstellung von LNMP docker-compose -f docker-compose.yml up #-f gibt das Docker-Compose im aktuellen Verzeichnis als Startdatei an, up erstellt und startet den Container
#Alle bereitgestellten Containerprozesse mit einem Klick anzeigen docker-compose -f docker-compose.yml ps Name Befehl Status Ports ------------------------------------------------------------------------------------- composelnmp_mysql_1 docker-entrypoint.sh --cha ... Bis 0.0.0.0:3306->3306/tcp composelnmp_nginx_1 ./sbin/nginx -g Daemon aus; Hoch 0.0.0.0:81->80/tcp composelnmp_php_1 ./sbin/php-fpm -c /usr/loc ... Bis 9000/tcp #Beenden aller bereitgestellten Containerprozesse mit einem Klick docker-compose -f docker-compose.yml stop Composelnmp_nginx_1 wird gestoppt ... fertig Composelnmp_php_1 wird gestoppt ... fertig Stoppen von composelnmp_mysql_1 ... fertig#Starten Sie den Container mit einem Klick und führen Sie docker-compose -f docker-compose.yml start im Hintergrund aus #Bereinigen Sie alle bereitgestellten Containerprozesse mit einem Klick docker-compose -f docker-compose.yml down
#Sehen Sie sich das compose_nginx_tomcat-Paket an [root@docker ~]# tree compose_nginx_tomcat/ verfassen_nginx_tomcat/ ├── docker-compose.yml ├── MySQL │ ├── conf │ │ └── my.cnf #mysql-Konfigurationsdatei│ └── data #einzubindendes mysql-Datenverzeichnis├── nginx │ ├── Dockerfile #Benutzerdefinierte Image-Konfigurationsdatei│ ├── nginx-1.12.1.tar.gz #Quellpaket│ └── nginx.conf #nginx-Konfigurationsdatei├── tomcat │ ├── apache-tomcat-8.0.46.tar.gz #Quellcode-Paket│ ├── Dockerfile #Benutzerdefinierte Image-Konfigurationsdatei│ └── server.xml #Tomcat-Konfigurationsdatei└── Webapps └── WURZEL └── index.html #Testdatei für die Webseite
#Sehen Sie sich die Startschnittstellendatei von Docker-Compose an cat compose_nginx_tomcat/docker-compose.yml Version: '3' Leistungen: nginx: Hostname: nginx bauen: Kontext: ./nginx Dockerdatei: Dockerdatei Häfen: - 82:80 Netzwerke: -lnmt Bände: - ./webapps:/opt/webapps tomcat01: Hostname: tomcat01 Erstellen: ./tomcat Netzwerke: -lnmt Bände: – /usr/local/jdk1.8.0_45:/usr/local/jdk1.8.0_45 - ./webapps:/usr/local/apache-tomcat-8.0.46/webapps tomcat02: Hostname: tomcat02 Erstellen: ./tomcat Netzwerke: -lnmt Bände: - /usr/local/jdk1.8.0_45:/usr/local/jdk1.8.0_45 #Die Java-Umgebung des Docker-Hosts ist gemountet! - ./webapps:/usr/local/apache-tomcat-8.0.46/webapps #Mounten Sie das Webverzeichnis mysql: Hostname: MySQL Bild:mysql:5.6 Häfen: - 3307:3306 Netzwerke: -lnmt Bände: - ./mysql/conf:/etc/mysql/conf.d - ./mysql/data:/var/lib/mysql Umfeld: MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: db MYSQL_USER: Benutzer MYSQL_PASSWORD: Benutzer123 Netzwerke: lnmt:
Durch die Installation einer JAVA-Umgebung in jedem Container wird der Container zu groß. Hängen Sie daher die lokale Java-Umgebung in den Tomcat-Container, um Platz zu sparen
#Da der Tomcat-Containerprozess die lokale Java-Umgebung des Docker-Hosts mounten muss, #installieren Sie also jdk-8u45-linux-x64.tar.gz lokal auf dem Docker-Host tar xf jdk-8u45-linux-x64.tar.gz -C /usr/local #Bereitstellung des Ngxin+Tomcat-Reverse-Proxy-Clusters mit einem Klick docker-compose -f docker-compose.yml up
Nginx-Reverse-Proxy-Konfigurationsdatei, Benutzer-Root; Arbeiterprozesse automatisch; error_log Protokolle/error.log Informationen; pid-Protokolle/nginx.pid; Ereignisse { verwenden Sie epoll; } 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; KeepAlive-Timeout 65; upstream www.example.com { #ip_hash; Server Tomcat01:8080; #Der in der Compose-Schnittstellendatei definierte Hostname kann direkt in IP aufgelöst werden Server tomcat02:8080; } Server { hören Sie 80; Servername localhost; Standort / { Proxy-Passwort http://www.example.com; } Standort ~ \.(html|css|js|jpg|png|gif)$ { Wurzel /opt/webapps/ROOT; } } }
Dies ist das Ende dieses Artikels über die Docker-Image-Produktion und das Ein-Klick-Verpacken und Bereitstellen des gesamten Projekts. Weitere relevante Inhalte zur Docker-Image-Produktion und zum Verpacken und Bereitstellen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!
<<: Die entsprechenden Attribute und Verwendung von XHTML-Tags in CSS
>>: calc(), um einen Vollbild-Hintergrundinhalt mit fester Breite zu erreichen
Vor CSS3 konnten Verlaufsbilder nur als Hintergru...
Vorwort Obwohl manche Liebe auf dieser Welt ihren...
MySQL-Version: MySQL Community Server 5.7.17, ins...
Docker Toolbox ist eine Lösung zur Installation v...
Original-URL: http://segmentfault.com/blog/ciaocc/...
JPQL steht für Java Persistence Query Language. B...
1.html Teil Code kopieren Der Code lautet wie folg...
Da ich MySQL schon so lange verwende, glaube ich,...
Rendern Nachdem ich online nach relevanten Inform...
Inhaltsverzeichnis 1. Datenbank USE auswählen 2. ...
Ich hatte nicht vor, diesen Blog zu schreiben, ab...
Der experimentelle Code lautet wie folgt: </hea...
Wir müssen lediglich einen beliebigen Texteditor ö...
Nachdem ich das System heute neu installiert hatt...
Einführung in Docker Docker ist eine Open-Source-...