Docker | Verwenden Sie Docker, um benutzerdefinierte Bilder zu erstellen, um Projekte und Umgebungen mit künstlicher Intelligenz zu kapseln

------------------------- Docker-Serie-------- ---- ----------

Docker | Lesen Sie einfach diesen Artikel für Docker im Deep Learning_Deep Learning Docker-CSDN-Blog

Docker | Verwenden Sie den Remote-Server Linux, um einen Pytorch-Container zu erstellen, laden Sie die Datei auf GitHub herunter und führen Sie das Layout2img-Projekt aus (Schritt-für-Schritt)_linux lädt die Github-Datei herunter – CSDN-Blog​​​​​

Docker | Detaillierte Schritte zur Installation von Portainer mit Docker-CSDN-Blog 

Docker | Übertragen Sie Ihr eigenes Docker-Image an den Docker-Hub [Bild- und Textdetails] – 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.RUNCMDADDCOPYENTRYPOINT
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  masterdas 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

[1] Verwenden Sie Dockerfile, um das Bild anzupassen · Docker – vom Einstieg bis zur Praxis (docker-practice.github.io)

[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

Supongo que te gusta

Origin blog.csdn.net/weixin_44649780/article/details/135100119
Recomendado
Clasificación