Sie können Docker installieren und einfache Vorgänge über den Docker-Kern und die Installation durchführen. 1. So erstellen Sie ein Docker-Image Docker-Images sind nicht nur die Kerntechnologie von Docker, sondern auch ein Standardformat für Anwendungsversionen. Ein vollständiges Docker-Image kann den Betrieb eines Docker-Containers unterstützen. Während der gesamten Nutzung von Docker können Sie nach dem Eingeben eines finalisierten Containers Vorgänge im Container ausführen. Der häufigste Vorgang ist die Installation von Anwendungsdiensten im Container. Wenn Sie die installierten Dienste migrieren möchten, müssen Sie ein neues Image für die Umgebung und die erstellten Dienste generieren. (1) Auf Basis eines vorhandenen Bildes erstellen Der Befehl „Docker Commit“ wird hauptsächlich zum Erstellen von Images auf Grundlage vorhandener Images verwendet. Sein Wesen besteht darin, das in einem Container ausgeführte Programm und die Betriebsumgebung des Programms zu packen, um ein neues Image zu generieren. Das Befehlsformat ist wie folgt: Docker-Commit [Optionen] Container-ID/Name Warehouse-Name: [Tag] Die Parameter sind wie folgt:
(1) Installieren Sie zuerst Docker und erstellen Sie dann ein Image [root@localhost ~]# yum -y installiere Docker [root@localhost ~]# systemctl starte Docker [root@localhost ~]# mount /dev/cdrom /media/ mount: /dev/sr0 ist schreibgeschützt und wird schreibgeschützt gemountet [root@localhost ~]# cd /media/ [root@localhost-Medien]# ls apache-tomcat-8.5.16.tar.gz dhcp jdk-8u91-linux-x64.tar.gz centos httpd-registry.tar.gz centos6 httpd_centos ubuntu-12.04-x86_64-minimal.tar.gz [root@localhost media]# docker load < dhcp \\zair lädt das Image in das lokale Verzeichnis [root@localhost media]# docker images \\Zeigen Sie das Image an [root@localhost media]# docker create -it docker.io/networkboot/dhcpd /bin/bash \\Container erstellen dfbe3a15f462d82674cfdfe87dfb7c4b4b1dcf2267e5c0043510cbe10f11a65b [root@localhost /]# docker ps -a \\Container anzeigen CONTAINER ID IMAGE BEFEHL ERSTELLT STATUS PORTS NAMEN dfbe3a15f462 docker.io/networkboot/dhcpd "/entrypoint.sh /b..." Vor etwa einer Minute Erstellt determined_dubinsky [root@localhost /]# docker start dfbe3a15f462 \\Container dfbe3a15f462 starten [root@localhost /]# docker exec -it dfbe3a15f462 /bin/bash root@dfbe3a15f462:/# touch 123 \\Zwei Dateien erstellenroot@dfbe3a15f462:/# touch 456 (2) Starten Sie ein Image, nehmen Sie Änderungen im Container vor und senden Sie den geänderten Container anschließend als neues Image ab. Sie müssen sich die D-Nummer des Containers merken, zum Beispiel: [root@localhost /]# docker ps -a CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN dfbe3a15f462 docker.io/networkboot/dhcpd "/entrypoint.sh /b..." vor 5 Minuten Up 2 Minuten determined_dubinsky (3) Verwenden Sie den Befehl dockercommit, um wie folgt ein neues Image zu erstellen: [root@localhost /]# docker commit -m "newdhcp" -a "xws" dfbe3a15f462 docker:mydhcp sha256:2c1acb192f78bbbb584fc52954a179eb0f10730e0cd58d120d952439ead45b00 (4) Nach Abschluss der Erstellung werden die ID-Informationen des neu erstellten Bildes zurückgegeben. Zeigen Sie die lokale Bildliste an, um die neu erstellten Bildinformationen anzuzeigen: [root@localhost /]# Docker-Bilder REPOSITORY TAG BILD ID ERSTELLT GRÖSSE docker mydhcp 2c1acb192f78 Vor etwa einer Minute 125 MB docker.io/networkboot/dhcpd latest 6f98b6b9b486 vor 19 Monaten 125 MB (2) Auf Basis einer lokalen Vorlage erstellen Ein Image kann durch Importieren einer Betriebssystem-Vorlagendatei generiert werden. Die Vorlage kann vom Open-Source-Projekt OPENVZ unter der Downloadadresse heruntergeladen werden: Mit folgendem Befehl herunterladen wget http://down1oad.openvz.org/template/precreated/ubuntu-12.04-x86_64-minimal.tar.gz (3) Basierend auf Dockerfile erstellen Zusätzlich zur manuellen Generierung von Docker-Images können Sie Dockerfile auch zum automatischen Generieren von Images verwenden. Dockerfile ist eine Datei, die aus einer Reihe von Anweisungen besteht, von denen jede einem Befehl in Linux entspricht. Das Docker-Programm liest die Anweisungen im Dockerfile, um das angegebene Image zu generieren. Die Dockerfile-Struktur ist grob in vier Teile unterteilt: grundlegende Image-Informationen, Betreuerinformationen, Anweisungen zum Image-Betrieb und Anweisungen, die beim Starten des Containers ausgeführt werden. Beim Schreiben einer Docker-Datei muss ein striktes Format eingehalten werden: Die erste Zeile muss die FROM-Anweisung verwenden, um den Namen des Images anzugeben, auf dem sie basiert; verwenden Sie dann die MAINTAINER-Anweisung, um die Benutzerinformationen anzugeben, die das Image verwalten; dann folgen Anweisungen zu Image-Operationen, wie z. B. die RUN-Anweisung. Jedes Mal, wenn eine Anweisung ausgeführt wird, wird dem Basisimage eine neue Ebene hinzugefügt; verwenden Sie schließlich die CMD-Anweisung, um die Befehlsoperation anzugeben, die beim Starten des Containers ausgeführt werden soll. Beispiel: Verwenden von Dockerfile zum Erstellen eines Images und Ausführen in einem Container 1. Erstellen Sie ein Arbeitsverzeichnis [root@localhost /]# mkdir apache [root@localhost /]# cd apache/ 2. Erstellen und schreiben Sie die Dockerfile-Datei [root@localhost media]# docker load < centos \\Laden Sie zuerst centos in das lokale [root@localhost apache]# vim Dockerfile FROM centos \\Basierend auf dem Centos-Basisimage MAINTAINER Der Centos-Projektor \\Pflegt die Benutzerinformationen des Images und schreibt sie anschließend beiläufig RUN yum -y update \\Anweisungen zum Installieren des Apache-Softwarepakets im Image RUN yum -y install httpd EXPOSE 80 \\Öffne Port 80 ADD index.html /var/www/html/index.html //Kopiere die Homepage-Datei der Website ADD run.sh /run.sh //Kopiere das Ausführungsskript in das Image RUN chmod 775 /run.sh RUN systemctl disable httpd \\Apache so einstellen, dass er gestartet wird oder nicht CMD 【“/run.sh”】 \\Container starten, um Skript auszuführen 3. Schreiben Sie den Inhalt des Ausführungsskripts [root@localhost apache]# vim run.sh #!/bin/bash rm -rf /run/httpd/* \\Bereinigen Sie den HTTP-Cache exec /usr/sbin/apachectl -D FOREGROUND \\Starten Sie den Apache-Dienst 4. Erstellen Sie eine Testseite [root@localhost apache]# echo "asd" >index.html [root@localhost apache]# ls Docker-Datei index.html run.sh 5. Generieren Sie ein Image mit Dockerfile Nachdem Sie die Docker-Datei und den zugehörigen Inhalt geschrieben haben, können Sie mit dem Befehl „Docker Build“ ein Image erstellen. Verwenden Sie das gerade geschriebene Dockerfile, um das Image automatisch zu generieren [root@localhost apache]# docker build -t httpd:centos . Nachdem Sie das Bild im Befehl zum automatischen Generieren eines Bilds angegeben haben, müssen Sie unbedingt den Speicherpfad des neu generierten Bilds schreiben. Das heißt, der "." nach dem Leerzeichen stellt den aktuellen Pfad dar, andernfalls wird ein Fehler gemeldet. 6. Führen Sie den Container mit dem neuen Image aus Laden Sie das neu generierte Image in den Container und führen Sie es aus [root@localhost /]# docker run -d -p 12345:80 httpd:centos ee9adf324443b006ead23f2d9c71f86d1a4eb73358fb684ee3a2d058a0ac4243 [root@localhost apache]# docker ps -a CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN 99e9234cefe5 httpd:centos "/run.sh" vor 8 Sekunden Vor 7 Sekunden 0.0.0.0:12345->80/tcp youthful_lumiere dfbe3a15f462 docker.io/networkboot/dhcpd "/entrypoint.sh /b..." vor 56 Minuten Vor 53 Minuten determined_dubinsky //Verwende das neu generierte Image, um es in den Container zu laden und auszuführen //Die Option „-p“ realisiert die Zuordnung vom lokalen Port 12345 zu Port 80 im Container Greifen Sie über einen Browser auf die Webseite zu Docker-Datenverwaltung Um in Docker die im Container generierten Daten bequem anzuzeigen oder Daten zwischen mehreren Containern auszutauschen, sind Containerdatenverwaltungsvorgänge erforderlich. Es gibt zwei Hauptmethoden zum Verwalten von Daten in Docker-Containern: Datenvolumes und Datenvolumes-Container. (1) Datenmenge Ein Datenvolume ist ein spezielles Verzeichnis, das von Containern verwendet wird. Es befindet sich im Container und kann das Verzeichnis des Hosts in das Datenvolume einbinden. Änderungen am Datenvolume sind sofort sichtbar und eine Aktualisierung der Daten hat keine Auswirkungen auf das Image. Dies ermöglicht eine Datenmigration zwischen dem Host und dem Container. Die Verwendung von Datenvolumes ähnelt dem Mount-Vorgang für Verzeichnisse unter Linux. 1. Erstellen Sie ein Datenvolumen [root@localhost /]# docker run -d -v /data1 -v /data2 --name web httpd:centos 4944c63124d2f96bedd78b4016e6d96e464089626e97b913b06ec888e7ab8f65 [root@localhost /]# docker exec -it web /bin/bash \\Geben Sie den Container ein und Sie können sehen, dass es sich um denselben Rechner wie den Host handelt [root@4944c63124d2 /]# ls anaconda-post.log boot data2 usw. lib media opt root run.sh srv tmp var bin data1 dev home lib64 mnt proc run sbin sys usr [root@4944c63124d2 /]# (2) Mounten Sie das Host-Verzeichnis als Datenvolume Zum Beispiel [root@localhost /]# docker run -d -v /var/www:/xws --name web-1 httpd:centos 05079057bf0c7c47b14fd457d1a5df0e29f080b6103753399654ef9d0aa4bf0f Mitte: Ersteres ist das Verzeichnis des Hostcomputers und letzteres ist das Verzeichnis im Container [root@localhost /]# cd /var/www/ [root@localhost www]# touch asdasdasd [root@localhost www]# ls Abonnieren Gehen Sie in den Container und schauen Sie nach [root@localhost /]# docker exec -it web-1 /bin/bash [root@05079057bf0c /]# ls anaconda-post.log boot usw. lib media opt root run.sh srv tmp var bin dev home lib64 mnt proc run sbin sys usr xws [root@05079057bf0c /]# cd xws [root@05079057bf0c xws]# ls Abonnieren Sie können sehen, dass der Host und der Container teilen (2) Datenvolumencontainer [root@localhost /]# docker run -it --volumes-from web --name 777 httpd:centos /bin/bash [root@d6324596cb2c /]# cd data1 [root@d6324596cb2c data1]# Touch-Datei [root@d6324596cb2c data1]# beenden Ausfahrt [root@localhost /]# docker exec -it web /bin/bash [root@4944c63124d2 /]# ls 123 bin data1 dev home lib64 mnt proc run sbin sys usr anaconda-post.log boot data2 usw. lib media opt root run.sh srv tmp var [root@4944c63124d2 /]# cd data1 [root@4944c63124d2 data1]# ls Datei [root@4944c63124d2 data1]# Sie können sehen, dass die beiden Container teilen (3) Docker-Netzwerkkommunikation Docker bietet einen Mechanismus zum Zuordnen von Container-Ports zum Host und zum Verbinden von Containern, um Netzwerkdienste für Container bereitzustellen. 1. Portzuordnung [root@localhost /]# docker run -d -P httpd:centos 70762709d90a8365803b8b13be02e06e2f9c0b4fdb8624bad01d579817809 [root@localhost /]# docker ps -a CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN 70762709d90a httpd:centos "/run.sh" vor 5 Sekunden Aktiv seit 4 Sekunden 0.0.0.0:**32768**->80/tcp kickass_bhaskara Sie können sehen, dass der Port 32768 wird Sie können auch den Port angeben [root@localhost /]# docker run -d -p 123:80 httpd:centos 9c7b1b3989b30f44c22276a62674e565daf410e05bdf0b4892c09dca22662253 2. Container-Vernetzung Die Containerverbindung wird durch die Einrichtung eines dedizierten Netzwerkkommunikationstunnels zwischen Containern über die Containernamen erreicht. Einfach ausgedrückt wird zwischen dem Quellcontainer und dem Empfangscontainer ein Tunnel aufgebaut. Der Empfangscontainer kann die vom Quellcontainer angegebenen Informationen sehen. Beim Ausführen des Befehls „docker run“ wird die Option --link verwendet, um eine Verbindung und Kommunikation zwischen Containern herzustellen. --link Name:Alias \Alias Erstellen eines Quellcontainers [root@localhost /]# docker run -d -P --name web1 httpd:centos 0105f396c69b15557af4c15a62143872e725a28050075b554a4d2765a504d558 Erstellen eines Empfangscontainers Verwenden Sie den Befehl „Docker Run“, um Container B zu erstellen. --name gibt den Namen als web2 an. --link gibt den Verbindungscontainer an, um die Containerverbindung herzustellen. [root@localhost /]# docker run -d -P --name web2 --link web1:web1 httpd:centos 10413ec7492d1d4bab724b4ecf2c2378dae6f496d14c2d68d27ee29b6a26bb1a Testen der Containerverbindung [root@localhost /]#** docker exec -it web2 /bin/bash** [root@10413ec7492d /]# **ping web1** PING web1 (172.17.0.8) 56(84) Bytes Daten. 64 Bytes von Web1 (172.17.0.8): icmp_seq=1 ttl=64 Zeit=0,153 ms 64 Bytes von Web1 (172.17.0.8): icmp_seq=2 ttl=64 Zeit=0,063 ms 64 Bytes von Web1 (172.17.0.8): icmp_seq=3 ttl=64 Zeit=0,064 ms 64 Bytes von Web1 (172.17.0.8): icmp_seq=4 ttl=64 Zeit=0,074 ms 64 Bytes von Web1 (172.17.0.8): icmp_seq=5 ttl=64 Zeit=0,065 ms 64 Bytes von Web1 (172.17.0.8): icmp_seq=6 ttl=64 Zeit=0,065 ms 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:
|
<<: Grundlegende Schritte zur Verwendung einer Mysql-SSH-Tunnelverbindung
>>: So ändern Sie den Punkt im WeChat-Applet Swiper-Dot in einen Slider
Docker-Installation 1. Anforderungen: Linux-Kerne...
Inhaltsverzeichnis Bereitstellung mehrerer Anwend...
So ändern Sie den Speicherort des MySQL-Datenbank...
Inhaltsverzeichnis 1 Konfigurations- und Datenver...
Lottie ist eine von Airbnb entwickelte Open-Sourc...
1. Nachfrage Die Basis verfügt über 300 neue Serv...
CSS-Benennungskonventionen (Regeln) Häufig verwen...
Hallo zusammen, heute werde ich mit Ihnen die WeP...
NULL- und NOT NULL-Modifikatoren, DEFAULT-Modifik...
<br />In vielen kleinen Unternehmen besteht ...
Der zu erzielende Effekt: Wenn die Maus auf das k...
Um MySQL-Abfrageergebnisse in CSV zu exportieren,...
Inhaltsverzeichnis Vorwort Frühere Iterationen It...
Die Nginx-Konfigurationsdatei ist hauptsächlich i...
1. Verwenden Sie das Tag <nobr>, um keinen Z...