------------------------- Docker-Serie-------- ---- ----------
Docker | Lesen Sie einfach diesen Artikel für Docker im Deep Learning_Deep Learning Docker-CSDN-Blog
Docker | Detaillierte Schritte zur Installation von Portainer mit Docker-CSDN-Blog
Docker ist ein Tool zum Packen, Bereitstellen und Ausführen von Anwendungen in leichtgewichtigen Containern . Wenn Sie die Grundlagen von Docker erlernen möchten, lesen Sie den Blog oben.
1. Regeln zum Schreiben von Docker-Dateien
In der Docker-Datei ist alles auf der linken Seite eine ANLEITUNG und auf der rechten Seite das ARGUMENT dieser Anweisungen .
Jede Anweisung in der Docker-Datei erstellt eine Ebene, RUN
und dies ist keine Ausnahme. Das Verhalten jedes Einzelnen RUN
ist das gleiche wie beim manuellen Einrichten des Spiegels gerade: Erstellen Sie eine neue Ebene, führen Sie diese Befehle darauf aus, und nachdem die Ausführung abgeschlossen ist, commit
bildet die Änderung dieser Ebene einen neuen Spiegel.
Dockerfile-Anweisungen | erklären |
---|---|
AUS | Geben Sie Basisbilder an, die aus Containerregistern (Docker Hub, GCR, Quay, ECR usw.) abgerufen werden können. |
LAUFEN | Führen Sie den Befehl während des Image-Erstellungsprozesses aus. |
ENV | Legen Sie Umgebungsvariablen im Bild fest. Es wird sowohl während des Builds als auch im laufenden Container verfügbar sein. Wenn Sie nur Variablen zur Buildzeit festlegen möchten, verwenden Sie die ARG-Direktive. |
KOPIEREN | Lokale Dateien und Verzeichnisse in das Image kopieren |
EXPONIEREN | Geben Sie den Port an, der für den Docker-Container verfügbar gemacht werden soll. |
HINZUFÜGEN | Es handelt sich um eine funktionsreichere Version der COPY-Anweisung. Es ermöglicht auch das Kopieren von einer URL als Quelle und das automatische Extrahieren von TAR-Dateien in Bilder. Es wird jedoch empfohlen, den COPY-Befehl anstelle von ADD zu verwenden. Wenn Sie eine Remote-Datei herunterladen möchten, verwenden Sie Curl oder rufen Sie sie mit RUN ab. |
ARBEITSVERZEICHNIS | Legen Sie das aktuelle Arbeitsverzeichnis fest. Sie können diese Anweisung in Ihrer Docker-Datei wiederverwenden, um verschiedene Arbeitsverzeichnisse festzulegen. Wenn WORKDIR festgelegt ist, führen Sie die Anweisungen , , oder im Verzeichnis aus.RUN CMD ADD COPY ENTRYPOINT |
VOLUMEN | Es wird zum Erstellen von Volumes oder zum Mounten von Volumes in Docker-Containern verwendet |
BENUTZER | Legen Sie den Benutzernamen und die UID fest, wenn Sie den Container ausführen. Mit dieser Anweisung können Sie einen Nicht-Root-Benutzer für den Container festlegen. |
ETIKETT | Metadateninformationen, die zur Angabe von Docker-Images verwendet werden |
ARG | Wird zum Festlegen von Buildzeitvariablen mit Schlüsseln und Werten verwendet. Die ARG-Variable ist nicht verfügbar, während der Container ausgeführt wird. Wenn Sie Variablen in einem laufenden Container beibehalten möchten, verwenden Sie ENV. |
HÜLSE | Diese Direktive legt Shell-Optionen und die Standard-Shell für die darauf folgenden RUN-, CMD- und ENTRYPOINT-Direktiven fest. |
CMD | Es wird verwendet, um Befehle in einem laufenden Container auszuführen. Es kann nur ein CMD geben, bei mehreren CMDs gilt nur das letzte. Es kann über die Docker-CLI überschrieben werden . |
EINSTIEGSPUNKT | Gibt den Befehl an, der beim Start des Docker-Containers ausgeführt wird. Wenn kein ENTRYPOINT angegeben ist, wird standardmäßig ENTRYPOINT verwendet. Sie können ENTRYPOINT auch mithilfe von Flags über die CLI überschreiben . Weitere Informationen finden Sie unter CMD vs. ENTRYPOINT ./bin/sh -c --entrypoint |
Docker-Images werden nacheinander (Schicht für Schicht) mithilfe der Verbundmontage gemountet, und das Image wird im Container erstellt.
2. Passen Sie das Docker-Image an
2.1. Methode 1: Erstellen Sie ein Image über Dockerfile [am häufigsten verwendet]
2.1.1.Docker-Datei schreiben
Erstellen Sie eine neue Docker-Datei und schreiben Sie die Umgebung
FROM nvcr.io/nvidia/pytorch:22.12-py3
RUN apt-get update \
&& apt-get install -y espeak
WORKDIR /app
COPY MB-iSTFT-VITS2 /app/MB-iSTFT-VITS2
WORKDIR /app/MB-iSTFT-VITS2
RUN /usr/bin/python -m pip install --upgrade pip \
&& pip install -r requirements.txt
EXPOSE 6843
ENV FLASK_APP=app.py
#CMD ["python", "/app/app.py"]
CMD ["flask", "run", "--host=0.0.0.0"]
2.2.2. Erstellen Sie das Image
Erstellen Sie ein Docker-Image mit Dockerfile
Die grundlegende Syntax lautet:
docker build [OPTIONS] PATH | URL | -
docker build --no-cache -t tts:v0.1 -f ./Dockerfile .
2.3.3 Verwendung von Spiegeln
Sehen Sie sich das Build-Image an
2.3.3.1. Spiegel direkt verwenden
Wenn das Bild beim Einkapseln mit Flask oder anderen Netzwerk-Frameworks konfiguriert wird, können Zielerkennung, Sprachsynthese usw. direkt durch Anpassung implementiert werden. Dieser Artikel verwendet ein Algorithmusmodell für künstliche Intelligenz + ein Flask-Framework!
docker run -p 5000:5000 tts:v0.1 python app.py --text
oder
docker run -p 5000:5000 tts:v0.1 python app.py --text
Wenn ein Fehler auftritt, siehe [PS1]
2.3.3.2. Container mithilfe gekapselter Bilder generieren
docker run -it --gpus all --ipc host --net host --name tts-test insanena414/tts_v1:latest /bin/bash
2.2. Methode 2: Über Git-Repo erstellen
docker build -t hello-world https://github.com/docker-library/hello-world.git#master:amd64/hello-world
Der Befehl gibt das für den Build erforderliche Git-Repository an und gibt den Zweig als und master
das Build-Verzeichnis als an /amd64/hello-world/
. Dann geht Docker zum git clone
Projekt, wechselt zum angegebenen Zweig und gibt das angegebene Verzeichnis ein, um mit dem Erstellen zu beginnen.
2.3. Methode 3: Erstellen Sie ein mit tar komprimiertes Paket
docker build my.tar.gz
Während des Prozesses aufgetretene Probleme und deren Lösungen [PS]
【PS1】Docker: Fehlerantwort vom Daemon: Shim-Aufgabe konnte nicht erstellt werden: OCI-Laufzeiterstellung fehlgeschlagen: Runc-Erstellung fehlgeschlagen: Containerprozess konnte nicht gestartet werden: Fehler während der Container-Init: Fehler beim Ausführen von Hook Nr. 1: Fehler beim Ausführen des Hooks: Exit-Status 1, stdout: , stderr: Automatisch erkannter Modus als „Legacy“
Fehleranalyse: Es kann sein, dass die aktuelle Cuda-Geräteversion des Computers nicht mit der Torch-Version übereinstimmt.
Verweise
[2] So erstellen Sie ein Docker-Image [Umfassender Leitfaden für Anfänger] (devopscube.com)
【3】Stellen Sie schnell häufig wechselnde Docker-Images bereit (mit Bildgröße) | Verschiedenes Blog (kimeuichan.github.io) 【4】Top 20 Dockerfile-Best Practices für Sicherheit – Sysdig