1.0 Einleitung1.1 Was ist Docker? Docker war ursprünglich ein internes Projekt, das von Solomon Hykes, dem Gründer von dotCloud, in Frankreich initiiert wurde. Es wurde im März 2013 unter der Apache 2.0-Lizenz als Open Source freigegeben und der Hauptprojektcode wird auf GitHub verwaltet. Docker wird mit der von Google eingeführten Sprache Go entwickelt und implementiert. Docker ist ein Paket von Linux-Containern, das eine einfache und benutzerfreundliche Containerschnittstelle bietet. Es ist die beliebteste Linux-Containerlösung. Die Docker-Schnittstelle ist recht einfach und Benutzer können Container problemlos erstellen und zerstören. Docker packt die Anwendung und ihre Abhängigkeiten in eine Datei. Durch Ausführen dieser Datei wird ein virtueller Container generiert. Das Programm läuft in einem virtuellen Container, genau wie auf einer echten physischen Maschine. Mit Docker müssen Sie sich keine Gedanken über Umgebungsprobleme machen. 1.2 Anwendungsszenarien
1.3 Unterschiede 1. Physische Maschine 2. Virtuelle Maschine 3. Docker-Container 1.4 Drei Hauptkonzepte und Vorteile von Docker 1. Bild Docker ist einfach zu bedienen 1. Effizientere Nutzung der Systemressourcen Da Container keine Hardwarevirtualisierung und den zusätzlichen Aufwand für die Ausführung eines vollständigen Betriebssystems erfordern, nutzt Docker die Systemressourcen besser. 2. Schnellere Startzeit: Herkömmliche virtuelle Maschinentechnologie benötigt oft mehrere Minuten, um Anwendungsdienste zu starten, während Docker-Containeranwendungen in Sekunden oder sogar Millisekunden gestartet werden können, da sie direkt auf dem Host-Kernel ausgeführt werden, ohne dass ein vollständiges Betriebssystem gestartet werden muss. Dies spart erheblich Entwicklungs-, Test- und Bereitstellungszeit. 3. Konsistente Betriebsumgebung Ein häufiges Problem im Entwicklungsprozess ist das Problem der Umgebungskonsistenz. Aufgrund der Inkonsistenzen zwischen Entwicklungsumgebung, Testumgebung und Produktionsumgebung wurden einige Fehler während des Entwicklungsprozesses nicht entdeckt. 4. Kontinuierliche Bereitstellung und Implementierung Für Entwickler und Betriebsmitarbeiter (DevOps) ist es am wünschenswertesten, die Lösung einmal zu erstellen oder zu konfigurieren und sie dann überall normal auszuführen. 5. Einfachere Migration Da Docker die Konsistenz der Ausführungsumgebung gewährleistet, ist die Anwendungsmigration einfacher. Docker kann auf vielen Plattformen ausgeführt werden, egal ob es sich um eine physische Maschine, eine virtuelle Maschine, eine öffentliche Cloud, eine private Cloud oder sogar einen Laptop handelt, und die Laufergebnisse sind konsistent. 2.0 Docker-InstallationSystemumgebung: Docker unterstützt mindestens CentOS7 und auf einer 64-Bit-Plattform liegt die Kernelversion über 3.10 Version: Community Edition, Enterprise Edition (einschließlich einiger kostenpflichtiger Dienste) Offizielles Installationstutorial zur Version (Englisch) Tutorial zur Installation der Blogger-Version: # Docker installieren yum installiere Docker # Docker starten systemctl start/status docker # Docker-Startstatus anzeigen Docker-Version Konfigurieren des Beschleunigers Einführung: DaoCloud Accelerator ist ein beliebtes Docker-Tool, das das Problem des langsamen Zugriffs auf Docker Hub für Privatanwender löst. Der DaoCloud-Beschleuniger kombiniert inländische CDN-Dienste mit Protokollschichtoptimierung, um die Download-Geschwindigkeiten exponentiell zu erhöhen. Offizielle DaoCloud-Website # Ein Befehl zur Beschleunigung (denken Sie daran, Docker neu zu starten) curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://95822026.m.daocloud.io 3.0 Grundlegende Docker-BefehleDocker --Hilfe Verwendung: Docker [OPTIONEN] BEFEHL [Argument …] Docker-Daemon [ --help | … ] Docker [ --help | -v | --version ] A Eine autarke Laufzeit für Container. Optionen: --config=~/.docker Speicherort der Client-Konfigurationsdateien #Speicherort der Client-Konfigurationsdateien -D, --debug=false Debug-Modus aktivieren #Debug-Debugmodus aktivieren -H, --host=[] Daemon-Socket(s) zum Verbinden #Socket-Verbindung des Daemon-Prozesses -h, --help=false Druckverwendung #Druckverwendung -l, --log-level=info Protokollierungsebene festlegen #Protokollierungsebene festlegen --tls=false TLS verwenden; impliziert durch --tlsverify # --tlscacert=~/.docker/ca.pem Nur von dieser Zertifizierungsstelle signierte Zertifikate vertrauen #Zertifikatsignier-Zertifizierungsstelle vertrauen --tlscert=~/.docker/cert.pem Pfad zur TLS-Zertifikatsdatei #Pfad der TLS-Zertifikatsdatei --tlskey=~/.docker/key.pem Pfad zur TLS-Schlüsseldatei #Pfad der TLS-Schlüsseldatei --tlsverify=false TLS verwenden und Remote überprüfen #TLS zum Überprüfen des Remote verwenden -v, --version=false Versionsinformationen drucken und beenden #Versionsinformationen drucken und beenden Befehle: anhängen An einen laufenden Container anhängen #An ein angegebenes laufendes Image in der aktuellen Shell anhängenbuild Ein Image aus einem Dockerfile erstellen #Das Image über Dockerfile anpassencommit Ein neues Image aus den Änderungen eines Containers erstellen #Den aktuellen Container als neues Image übermittelncp Dateien/Ordner aus einem Container in ein HOSTDIR oder nach STDOUT kopieren #Angegebene Dateien oder Verzeichnisse aus dem Container auf den Host kopierencreate Einen neuen Container erstellen #Einen neuen Container erstellen, dasselbe wie run, aber ohne den Container zu startendiff Änderungen am Dateisystem eines Containers prüfen #Änderungen des Docker-Containers anzeigenevents Echtzeitereignisse vom Server abrufen#Echtzeitereignisse des Containers vom Docker-Dienst abrufenexec Einen Befehl in einem laufenden Container ausführen#Befehle auf einem vorhandenen Container ausführenexport Das Dateisystem eines Containers als Tar-Archiv exportieren #Den Inhaltsstrom des Containers als Tar-Archivdatei exportieren (entspricht import) history Zeigt den Verlauf eines Images an #Zeigt den Verlauf eines Images an images Listet images auf #Listet die aktuellen Images des Systems auf import Importiert den Inhalt eines Tarballs um ein Dateisystem-Image zu erstellen #Erstellt ein neues Dateisystem-Image aus dem Inhalt des Tarballs (entspricht export) info Systemweite Informationen anzeigen #Systembezogene Informationen anzeigen inspect Low-Level-Informationen zu einem Container oder Image zurückgeben #Containerdetails anzeigen kill Einen laufenden Container beenden #Einen angegebenen Docker-Container beenden load Ein Image aus einem Tar-Archiv oder STDIN laden #Ein Image aus einem Tar-Archiv laden (entspricht save) login Bei einem Docker-Register registrieren oder anmelden#Bei einem Docker-Quellserver registrieren oder anmeldenlogout Von einem Docker-Register abmelden #Aus dem aktuellen Docker-Register beendenlogs Die Protokolle eines Containers abrufen #Die aktuellen Container-Protokollinformationen ausgebenpause Alle Prozesse innerhalb eines Containers anhalten#Container anhaltenport Port-Zuordnungen oder eine bestimmte Zuordnung für den CONTAINER auflisten #Den internen Quellport des Containers anzeigen, der den zugeordneten Ports entsprichtps Container auflisten #Containerliste auflistenpull Ein Image oder ein Repository aus einem Register ziehen #Das angegebene Image oder Bibliotheksimage vom Docker-Image-Quellserver ziehenpush Ein Image oder ein Repository in ein Register pushen #Das angegebene Image oder Bibliotheksimage auf den Docker-Quellserver pushenrename Einen Container umbenennen #Den Container umbenennenrestart Einen laufenden Container neu starten #Einen laufenden Container neu startenrm Einen oder mehrere Container entfernen #Einen oder mehrere Container entfernenrmi Ein oder mehrere Images entfernen #Ein oder mehrere Images entfernen (kein Container, der das Image verwendet, kann gelöscht werden, andernfalls müssen Sie den entsprechenden Container löschen, um fortzufahren, oder mit -f das Löschen erzwingen) ausführen Einen Befehl in einem neuen Container ausführen #Einen neuen Container erstellen und einen Befehl ausführen speichern Ein oder mehrere Bilder in einem Tar-Archiv speichern #Ein Bild als Tar-Archiv speichern (entspricht laden) Suche Durchsuchen Sie den Docker Hub nach Bildern #indocker Suchen Sie im Hub nach Bildern. Start. Starten Sie einen oder mehrere angehaltene Container. Statistiken. Zeigen Sie einen Live-Stream der Ressourcennutzungsstatistiken des Containers an. Stoppen Sie einen laufenden Container. Tag. Markieren Sie ein Bild in einem Repository. Top. Zeigen Sie die laufenden Prozesse eines Containers an. Unpause. Setzen Sie alle Prozesse innerhalb eines Containers fort. Version. Zeigen Sie die Docker-Versionsinformationen an. Wait. Blockieren Sie, bis ein Container anhält, und drucken Sie dann seinen Exit-Code. Führen Sie „docker COMMAND --help“ aus, um weitere Informationen zu einem Befehl zu erhalten. docker search hello-docker # Suche nach Hello-Docker-Imagesdocker search centos # Suche nach CentOS-Imagesdocker pull hello-docker # Hol dir CentOS-Imagesdocker run hello-world #Führen Sie ein Docker-Image aus, um eine Containerinstanz zu generieren (Sie können es auch mit den ersten drei Ziffern der Image-ID ausführen) docker image ls # Alle lokalen Images anzeigen docker images # Docker-Images anzeigen docker image rmi hello-docker # CentOS-Images löschen docker ps # Laufende Container auflisten (wenn im erstellten Container kein Prozess läuft, wird der Container sofort gestoppt) docker ps -a # Listet alle laufenden Containerdatensätze aufdocker save centos > /opt/centos.tar.gz # Exportiert das Docker-Image lokaldocker load < /opt/centos.tar.gz #Importiert das lokale Image in die Docker-Image-Bibliothekdocker stop `docker ps -aq` # Stoppt alle laufenden Containerdocker rm `docker ps -aq` # Löscht alle Containerdatensätze auf einmaldocker rmi `docker images -aq` # Löscht alle lokalen Image-Datensätze auf einmal 3.1 Zwei Möglichkeiten zum Starten eines Containers Container führen Anwendungen aus und müssen daher auf einem Betriebssystem basieren. 1. Erstellen Sie einen neuen Container basierend auf dem Image und starten Sie ihn # 1. Führen Sie einen Docker im Hintergrund aus docker run -d centos /bin/sh -c „während true; Echo läuft; sleep 1; fertig“ # -d Führen Sie den Container im Hintergrund aus. # /bin/sh gibt die Verwendung des Bash-Interpreters von CentOS an. # -c Führen Sie einen Shell-Befehl aus. # „while true;do echo is running; sleep 1;done“ Drucken Sie im Linux-Hintergrund einmal pro Sekunde, dass es ausgeführt wird. docker ps # Überprüfen Sie den Containerprozess. docker logs -f Container-ID/-Name # Drucken Sie kontinuierlich die Protokollinformationen des Containers. docker stop centos # Stoppen Sie den Container. # 2. Starten Sie ein Bash-Terminal und ermöglichen Sie Benutzern die Interaktion. docker run --name mydocker -it centos /bin/bash # --name definiert einen Namen für den Container# -i hält die Standardeingabe des Containers geöffnet# -t ermöglicht Docker, ein Pseudoterminal zuzuweisen und es an die Standardeingabe des Containers zu binden# /bin/bash gibt den Docker-Container an und interagiert mit dem Shell-Interpreter Wenn Sie mit Docker Run einen Container erstellen, führt Docker im Hintergrund die folgenden Schritte aus:
2. Starten Sie einen gestoppten Container neu [root@localhost ~]# docker ps -a # Zuerst den Datensatz abfragen CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ee92fcf6f32d centos "/bin/bash" vor 4 Tagen Beendet (137) vor 3 Tagen kickass_raman [root@localhost ~]# docker start ee9 # Starten Sie diesen Container ee9 erneut [root@localhost ~]# docker exec -it ee9 /bin/bash # Rufen Sie die interaktive Containerschnittstelle auf [root@ee92fcf6f32d /]# # Achten Sie auf den Benutzernamen, der zum Container-Benutzernamen geworden ist 3.2 Senden und Erstellen eines benutzerdefinierten Bilds # 1. Wir betreten den interaktiven Centos-Container und stellen fest, dass kein Vim-Befehl vorhanden ist: docker run -it centos # 2.Installieren Sie einen Vim im aktuellen Container yum install -y vim # 3. Beenden Sie nach der Installation von vim den Container exit # 4. Überprüfen Sie den Containerdatensatz des gerade installierten Docker-Containers von vim mit ls -a # 5. Senden Sie diesen Container und erstellen Sie ein neues Image Docker-Commit 059fdea031ba chaoyu/centos-vim # 6. Zeigen Sie die Bilddatei Docker-Images an REPOSITORY TAG BILD ID ERSTELLT GRÖSSE chaoyu/centos-vim latest fd2685ae25fe vor 5 Minuten 348 MB 3.3 Externer Zugriff auf Container Netzwerkanwendungen können im Container ausgeführt werden, aber um diese Anwendungen für die Außenwelt zugänglich zu machen, können Sie die Portzuordnung mit dem Parameter -p oder -P angeben. docker run -d -P training/webapp python app.py # Der Parameter -P ordnet Ports nach dem Zufallsprinzip den vom Container geöffneten Netzwerkports zu. # Überprüfe die zugeordneten Ports. docker ps -l CONTAINER ID BILD BEFEHL ERSTELLT STATUS PORTS NAMEN cfd632821d7a training/webapp "python app.py" vor 21 Sekunden Vor 20 Sekunden 0.0.0.0:32768->5000/tcp brave_fermi #Host ip:32768 bildet den Port 5000 des Containers ab. # Container-Loginformationen anzeigen docker logs -f cfd # #Logs kontinuierlich anzeigen # Sie können auch den Parameter -p verwenden, um den Mapping-Port anzugeben docker run -d -p 9000:5000 training/webapp python app.py Öffnen Sie den Browser und greifen Sie auf Port 9000 des Servers zu. Der Inhalt zeigt „Hallo Welt!“ Zeigt einen normalen Start an (Sollte der Zugriff fehlschlagen, überprüfen Sie Ihre Firewall und die Sicherheitsgruppe des Cloud-Servers) 4.0 Anpassen des Images mithilfe von DockerfileDas Image ist die Grundlage des Containers. Bei jeder Ausführung von Docker Run geben Sie an, welches Image als Grundlage für die Ausführung des Containers verwendet wird. Unsere vorherigen Beispiele verwendeten alle Images von Docker Hub. Die direkte Verwendung dieser Images kann nur bestimmte Anforderungen erfüllen. Wenn die Images unsere Anforderungen nicht erfüllen können, müssen wir sie anpassen. Unter Bildanpassung versteht man die Anpassung der Konfiguration und der Dateien, die jeder Ebene hinzugefügt werden. Wenn es möglich ist, jede Ebene von Änderungs-, Installations-, Konstruktions- und Betriebsbefehlen in ein Skript zu schreiben und das Skript zum Erstellen und Anpassen des Images zu verwenden, ist dieses Skript die Docker-Datei. Dockerfile ist eine Textdatei, die Anweisungen enthält. Jede Anweisung erstellt eine Ebene, sodass der Inhalt jeder Anweisung beschreibt, wie die Ebene erstellt werden soll. Parameter VON Grund auf #Erstellen Sie ein Basisbild. Versuchen Sie, das offizielle Bild als Basisbild zu verwenden. VON centos #Basisimage verwenden VON Ubuntu:14.04 #Basisimage mit Tag LABEL version="1.0" #Container-Metadaten, Hilfeinformationen, Metadaten, ähnlich wie Codekommentare LABEL maintainer="[email protected]" #Vermeiden Sie bei komplexen RUN-Befehlen unnötige Schichtungen, verwenden Sie Backslashes, um mehrere Befehle zu umschließen und sie zu einem Befehl zu kombinieren! Führen Sie den Befehl yum update && yum install -y vim \ aus. Python-dev #Backslash neue Zeile RUN /bin/bash -c "Quelle $HOME/.bashrc;echo $HOME" WORKDIR /root #Entspricht dem Linux-Befehl „cd“. Ändern Sie das Verzeichnis. Versuchen Sie, den absoluten Pfad zu verwenden! ! ! Verwenden Sie nicht RUN cd WORKDIR /test # WORKDIR Demo automatisch erstellen, wenn es nicht existiert # In den Demo-Ordner wechseln RUN pwd # Das Druckergebnis sollte /test/demo sein HINZUFÜGEN und KOPIEREN ADD hello / # Füge dem Image lokale Dateien hinzu und kopiere die lokale ausführbare Datei „hello“ in das /-Verzeichnis des Images. ADD test.tar.gz / # Füge es dem Stammverzeichnis hinzu und entpacke es. WORKDIR /root ADD hello test/ # Geben Sie /root/ ein. Fügen Sie den ausführbaren Befehl hello zum Testverzeichnis hinzu, das /root/test/hello lautet. Ein absoluter Pfad. COPY hello test/ # Entspricht dem obigen ADD-Effekt ADD und COPY - Verwenden Sie zuerst den Befehl COPY - ADD verfügt zusätzlich zur COPY-Funktion über eine Dekomprimierungsfunktion. Verwenden Sie curl oder wget, um Remotedateien/-verzeichnisse hinzuzufügen ENV # Umgebungsvariable, verwenden Sie ENV, um die Wartbarkeit wann immer möglich zu erhöhen. ENV MYSQL_VERSION 5.6 # Legen Sie eine MySQL-Konstante fest. RUN yum install -y mysql-server="${MYSQL_VERSION}" Fortgeschritten ist nur (Verständnis)
5.0 im Lager freigegeben1. Docker Hub hat insgesamt Bilder veröffentlicht Docker bietet ein GitHub ähnliches Repository, Docker Hub. Offizielle Website (Registrierung erforderlich) # Melden Sie sich nach der Registrierung der Docker-ID bei Dockerhub unter Linux an Docker-Anmeldung # Stellen Sie sicher, dass das Bild-Tag dem Kontonamen entspricht. Wenn der Bildname falsch ist, müssen Sie das Tag ändern. Docker-Tag chaoyu/centos-vim peng104/centos-vim # Die Syntax ist: Docker-Tag Warehouse-Name peng104/Warehouse-Name # Pushen Sie das Docker-Image zum Dockerhub Docker Push Peng104/Centps-cmd-exec: neueste # Gehen Sie zu Dockerhub, um das Image zu überprüfen. # Löschen Sie zuerst das lokale Image und testen Sie dann den Download der Pull-Image-Datei docker pull peng104/centos-entrypoint-exec 2. Privates Lager Docker Hub ist öffentlich und kann von anderen heruntergeladen werden. Es ist nicht sicher, daher können Sie auch das private Lager verwenden, das von Docker Registry bereitgestellt wird. Klicken Sie hier für detaillierte Informationen zur Verwendung # 1. Laden Sie ein offizielles Docker-Private-Warehouse-Image herunter. Docker Pull Registry # 2. Führen Sie ein privates Docker-Container-Repository aus docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry -d Hintergrundlauf -p Portzuordnung Hostmaschine 5000: Container 5000 -v Datenvolumen mountet das /opt/data/registry:/var/lib/registry des Hosts Name des Registrierungsabbilds /var/lib/registry Speicherort des privaten Lagers # Docker erlaubt standardmäßig kein Pushen von Abbildern ohne HTTPS. Wir können diese Einschränkung durch die Docker-Konfigurationsoptionen Nr. 3 entfernen. Ändern Sie die Docker-Konfigurationsdatei, um den HTTP-Modus zu unterstützen und private Bilder hochzuladen vim /etc/docker/daemon.json # Schreiben Sie den folgenden Inhalt { "Registrierungsspiegel": ["http://f1361db2.m.daocloud.io"], "unsichere Registrierungen":["192.168.11.37:5000"] } # 4. Ändern Sie die Docker-Dienstkonfigurationsdatei vim /lib/systemd/system/docker.service # Suchen Sie den Codeblock [Service] und schreiben Sie die folgenden Parameter [Service] Umgebungsdatei = -/etc/docker/daemon.json # 5. Laden Sie den Docker-Dienst neu systemctl daemon-reload # 6. Starten Sie den Docker-Dienst neu systemctl restart docker # Hinweis: Wenn Sie den Docker-Dienst neu starten, stürzen alle Container ab. # 7. Ändern Sie das Tag des lokalen Images und übertragen Sie es in Ihr eigenes privates Repository. Docker-Tag docker.io/peng104/hello-world-docker 192.168.11.37:5000/peng-hello # Browserzugriff http://192.168.119.10:5000/v2/_catalog, um das Lager anzuzeigen# 8. Laden Sie das private Lagerbild Docker Pull 192.168.11.37:5000/peng-hello herunter 6.0 BeispieldemonstrationSchreiben Sie eine Docker-Datei, erstellen Sie Ihr eigenes Image und führen Sie das Flask-Programm aus. Stellen Sie sicher, dass sich app.py und Dockerfile im selben Verzeichnis befinden! # 1. Bereiten Sie das Flask-Programm von app.py vor [root@localhost ~]# cat app.py aus Flasche importieren Flasche App = Flask(__name__) @app.route('/') def hallo(): returniere "Hallo Docker" wenn __name__=="__main__": app.run(Host='0.0.0.0',Port=8080) [root@master-home]# ls Docker-Datei app.py # 2. Dockerfile schreiben [root@localhost ~]# cat Docker-Datei VON python:2.7 LABEL-Betreuer="Warm und neu" Führen Sie den Befehl „pip install flask“ aus. KOPIEREN Sie app.py /app/ ARBEITSVERZEICHNIS /app EXPOSE 8080 CMD ["python","app.py"] # 3. Erstellen Sie das Image, suchen Sie die Docker-Datei im aktuellen Verzeichnis und beginnen Sie mit dem Erstellen von docker build -t peng104/flask-hello-docker . # 4. Betrachten Sie die erstellten Bilder Docker-Image ls # 5. Starten Sie diesen Flask-Hello-Docker-Container und ordnen Sie einen Port für den externen Zugriff zu. Docker run -d -p 8080:8080 peng104/flask-hello-docker # 6. Überprüfen Sie den laufenden Container Docker Container ls # 7. Pushen Sie dieses Image in das private Repository Docker-Tag peng104/flask-hello-docker 192.168.11.37:5000/peng-flaskweb Docker Push 192.168.11.37:5000/Peng-Flaskweb 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:
|
<<: Zusammenfassung häufig verwendeter Operatoren und Funktionen in MySQL
>>: Was ist dies in einer Punkt-für-Punkt-Reihe von JavaScript?
Analysieren Sie den Ausführungsprozess. Bewegen S...
Voraussetzung: Mac, zsh installiert, mysql herunt...
Nginx kann nicht nur Versionsinformationen verber...
Inhaltsverzeichnis Problembeschreibung Frontend-S...
Die Sicherheitsprobleme, die bei der Frontend-Ent...
Lösen Sie das Problem, dass das Vue-Projekt zwar ...
Inhaltsverzeichnis Beobachtermuster Vue-Pass-Wert...
1.1 Was ist MySQL Multi-Instance? Einfach ausgedr...
Hintergrund: Machen Sie jeden Tag ein wenig Forts...
Als ich kürzlich eine Schnittstelle zeichnete, st...
Vorwort Im realen Geschäftsleben ist Paging eine ...
In diesem Artikel finden Sie eine Sammlung von Ja...
Ein Docker-Container startet beim Start beispiels...
Inhaltsverzeichnis Vorwort MySQL Master-Slave-Rep...
Vorwort Bei der allgemeinen Entwicklung werden Bi...