Zweistündiges Docker-Einführungstutorial

Zweistündiges Docker-Einführungstutorial

1.0 Einleitung

1.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

  • Automatisches Verpacken und Veröffentlichen von Webanwendungen
  • Automatisiertes Testen und kontinuierliche Integration und Veröffentlichung
  • Bereitstellen und Optimieren von Datenbanken oder anderen Anwendungen in einer serviceorientierten Umgebung

1.3 Unterschiede

1. Physische Maschine

2. Virtuelle Maschine

3. Docker-Container

1.4 Drei Hauptkonzepte und Vorteile von Docker

1. Bild
2. Behälter
3. Aufbewahrungsort

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.
Unabhängig davon, ob es um die Ausführungsgeschwindigkeit von Anwendungen, Speicherverlust oder die Geschwindigkeit der Dateispeicherung geht, ist es effizienter als die herkömmliche Technologie virtueller Maschinen. Daher kann ein Host mit derselben Konfiguration im Vergleich zur virtuellen Maschinentechnologie häufig eine größere Anzahl von Anwendungen ausführen.

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.
Das Docker-Image stellt mit Ausnahme des Kernels eine vollständige Laufzeitumgebung bereit und stellt die Konsistenz der Anwendungsausführungsumgebung sicher, sodass Probleme wie „Dieser Code funktioniert auf meinem Computer einwandfrei“ nicht mehr auftreten.

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.
Mit Docker können durch Anpassen von Anwendungsimages kontinuierliche Integration, kontinuierliche Bereitstellung und Implementierung erreicht werden. Entwickler können Dockerfile verwenden, um Images zu erstellen und Integrationstests in Verbindung mit dem Continuous Integration-System durchzuführen.
Betriebs- und Wartungspersonal kann das Image schnell direkt in der Produktionsumgebung bereitstellen und es sogar mit dem Continuous Delivery/Deployment-System zur automatischen Bereitstellung kombinieren.
Darüber hinaus macht die Verwendung von Dockerfile die Image-Erstellung transparent. Dadurch erhält nicht nur das Entwicklungsteam ein Verständnis für die Ausführungsumgebung der Anwendung, sondern auch das Betriebs- und Wartungsteam kann die für den Anwendungsbetrieb erforderlichen Bedingungen leichter verstehen und das Image besser in der Produktionsumgebung bereitstellen.

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.
Daher können Benutzer Anwendungen, die auf einer Plattform ausgeführt werden, problemlos auf eine andere Plattform migrieren, ohne befürchten zu müssen, dass die Anwendung aufgrund von Änderungen in der Betriebsumgebung nicht ordnungsgemäß ausgeführt werden kann.

2.0 Docker-Installation

Systemumgebung: 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-Befehle

Docker --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:

# 1. Überprüfen Sie, ob das angegebene Image lokal vorhanden ist. Wenn nicht, laden Sie es aus dem öffentlichen Repository herunter.

# 2. Erstellen und starten Sie einen Container mit dem Image

# 3. Ordnen Sie ein Dateisystem zu und mounten Sie eine Lese-/Schreibebene außerhalb der schreibgeschützten Imageebene

# 4. Überbrücken Sie eine virtuelle Schnittstelle von der auf dem Host konfigurierten Bridge-Schnittstelle zum Container

# 5. Konfigurieren Sie eine IP-Adresse aus dem Adresspool für den Container

# 6. Führen Sie die vom Benutzer angegebene Anwendung aus

# 7. Der Container wird beendet, nachdem die Ausführung abgeschlossen ist

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 Dockerfile

Das 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)

VOLUMEN und BELICHTUNG
Speicher und Netzwerk

RUN und CMD und ENTRYPOINT
RUN: Befehle ausführen und eine neue Bildebene erstellen
CMD: Legen Sie den Standardbefehl und die Parameter fest, die nach dem Start des Containers ausgeführt werden sollen
ENTRYPOINT: Legen Sie den Befehl fest, der ausgeführt werden soll, wenn der Container gestartet wird

Shell-Format und Exec-Format
Führen Sie den Befehl yum install -y vim aus.
CMD echo "hallo Docker"
ENTRYPOINT echo "hallo Docker"

Exec-Format
RUN [„apt-get“; „install“; „-y“; ​​„vim“]
CMD [„/bin/echo“,”hallo Docker”]
EINSTIEGSPUNKT [“/bin/echo”,”hallo Docker”]


Wenn Sie einen Befehl im Shell-Format ausführen, wird die $name-Anweisung gelesen, während das exec-Format nur einen Befehl und keine Shell-Anweisung ausführt.
Katze Dockerfile
VON centos
ENV-Name Docker
ENTRYPOINT [“/bin/echo”,”hallo $name”]#Dies führt nur den Echo-Befehl aus und kann keine Shell-Variablen lesen
EINSTIEGSPUNKT ["/bin/bash","-c","echo hallo $name"]

CMD
Der Standardbefehl, der beim Starten des Containers ausgeführt wird. Wenn docker run andere Befehle angibt (docker run -it [image] /bin/bash), wird der CMD-Befehl ignoriert. Wenn mehrere CMDs definiert sind, wird nur der letzte ausgeführt.

EINSTIEGSPUNKT
Das Ausführen eines Containers als Anwendung oder Dienst wird nicht ignoriert, und Best Practices müssen implementiert werden: Schreiben Sie ein Shell-Skript als Einstiegspunkt
KOPIEREN Sie docker-entrypoint.sh /usr/local/bin
EINSTIEGSPUNKT ["docker-entrypoint.sh]
EXPOSE 27017
CMD ["mongod"]

[root@master home]# weitere Dockerfile
VON centos
ENV-Name Docker
#CMD ["/bin/bash","-c","echo hallo $name"]
EINSTIEGSPUNKT ["/bin/bash","-c","echo hallo $name"]

5.0 im Lager freigegeben

1. 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 Beispieldemonstration

Schreiben 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:
  • Tutorial zur Docker-Installation und einfachen Verwendung
  • Erste Schritte mit IPython und Docker-Containern
  • Eine vollständige Anleitung zur Docker-Befehlszeile (18 Dinge, die Sie wissen müssen)
  • Docker-Container vom Einstieg bis zur Obsession (empfohlen)
  • Eine Kurzanleitung zu Docker
  • Einführung in Docker-Container
  • Einfaches Einführungstutorial zur Installation und Anwendung von Docker
  • Docker-Grundlagen

<<:  Zusammenfassung häufig verwendeter Operatoren und Funktionen in MySQL

>>:  Was ist dies in einer Punkt-für-Punkt-Reihe von JavaScript?

Artikel empfehlen

Gängige Angriffe auf Web-Frontends und Möglichkeiten, sie zu verhindern

Die Sicherheitsprobleme, die bei der Frontend-Ent...

MySQL-Lösung für die Konfiguration mehrerer Instanzen

1.1 Was ist MySQL Multi-Instance? Einfach ausgedr...

CSS-Beispielcode zum Zeichnen eines Lutschers

Hintergrund: Machen Sie jeden Tag ein wenig Forts...

So zeichnen Sie eine vertikale Linie zwischen zwei Div-Tags in HTML

Als ich kürzlich eine Schnittstelle zeichnete, st...

Optimierungsanalyse der Limit-Abfrage in MySQL-Optimierungstechniken

Vorwort Im realen Geschäftsleben ist Paging eine ...

Docker verwendet Supervisor zur Verwaltung von Prozessvorgängen

Ein Docker-Container startet beim Start beispiels...

Detaillierte Erklärung der MySQL-Halbsynchronisierung

Inhaltsverzeichnis Vorwort MySQL Master-Slave-Rep...

So erstellen Sie einen Nginx-Image-Server mit Docker

Vorwort Bei der allgemeinen Entwicklung werden Bi...