So konfigurieren Sie ein Jupyter-Notebook im Docker-Container

So konfigurieren Sie ein Jupyter-Notebook im Docker-Container

Das Jupyter-Notebook wird unter dem Docker-Container konfiguriert, hauptsächlich zum Schreiben von Python-Code, genauer gesagt für die Deep-Learning-Entwicklung.

Der effizienteste Weg, Jupyter Web zu verwenden, besteht darin, es in der Cloud bereitzustellen. Unabhängig davon, ob es sich um einen CPU-Cloud-Server oder einen GPU-Cloud-Server handelt, kann es schnell gestartet und verwendet werden.

Das Aufkommen von Docker hat die Bereitstellung und Nutzung wesentlich komfortabler gemacht.

- Docker installieren

Docker ist in Docker CE und Docker EE unterteilt. Im Allgemeinen wird Docker CE (Community-Version) verwendet.

Docker kann auf Linux (Ubuntu, CentOS), MacOS, Windows oder Raspberry Pi installiert werden. Es wird im Allgemeinen unter Linux verwendet und ich persönlich mag das Ubuntu-System. Lassen Sie uns also vorstellen, wie Docker unter Ubuntu installiert wird.

Entfernen Sie zunächst alle alten Versionen, die möglicherweise auf Ihrem Computer vorhanden sind:

$ sudo apt-get entfernen docker docker-engine docker.io

Installieren optionaler Kernelmodule

Um die Installationsgröße des Kernelpakets zu reduzieren, wurden ab Ubuntu 14.04 einige Kernelmodule in optionale Kernelmodulpakete (linux-image-extra-*) verschoben. Ein normal installiertes System sollte die optionalen Kernelmodulpakete enthalten, bei einigen optimierten Systemen können diese jedoch fehlen. Der AUFS-Kerneltreiber ist Teil des optionalen Kernelmoduls. Da es sich um den empfohlenen Docker-Speicherschichttreiber handelt, wird allgemein empfohlen, das optionale Kernelmodulpaket zu installieren, um AUFS zu verwenden.

$ sudo apt-get update
$ sudo apt-get installiere linux-image-extra-$(uname -r) linux-image-extra-virtual

Docker CE unter Ubuntu 16.04 und höher verwendet standardmäßig den Speicherschichttreiber overlay2 und es ist keine manuelle Konfiguration erforderlich.

Zertifikats- und Schlüsselvorbereitung

Denn die apt-Quelle nutzt HTTPS, um sicherzustellen, dass die Software beim Download-Vorgang nicht manipuliert wird. Daher müssen wir zunächst das per HTTPS zu übertragende Paket zusammen mit dem CA-Zertifikat hinzufügen.

$ sudo apt-get update
$ sudo apt-get installiere apt-transport-https ca-certificates curl software-properties-common

Aufgrund von Problemen mit dem inländischen Netzwerk wird dringend empfohlen, inländische Quellen zu verwenden. Bitte beachten Sie die offiziellen Quellen in den Kommentaren.

$ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg |
# Offizielle Quelle# $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Fügen Sie abschließend die Docker-Softwarequelle hinzu:

$ sudo add-apt-repository \
 "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
 $(lsb_release -cs) \
 stabil"
# Offizielle Quelle# $ sudo add-apt-repository \
# "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
# $(lsb_release -cs) \
# stabil

Der obige Befehl fügt die stabile Version der Docker CE APT-Mirror-Quelle hinzu. Wenn Sie eine Test- oder Daily-Build-Version von Docker CE benötigen, ändern Sie „Stable“ in „Test“ oder „Nightly“.

Installieren Sie Docker CE

$ sudo apt-get update
$ sudo apt-get installiere docker-ce

Starten Sie Docker CE

$ sudo systemctl Docker aktivieren
$ sudo systemctl Docker starten

Verwenden Sie für Ubuntu 14.04 zum Starten den folgenden Befehl:

$ sudo Dienst Docker starten

Erstellen Sie eine Docker-Benutzergruppe

Aus Sicherheitsgründen wird der Root-Benutzer auf Linux-Systemen grundsätzlich nicht direkt verwendet. Daher besteht ein besserer Ansatz darin, Benutzer, die Docker verwenden müssen, zur Docker-Benutzergruppe hinzuzufügen.

$ sudo groupadd docker
$ sudo usermod -aG docker $USER

Testen Sie, ob Docker korrekt installiert ist

$ Docker-Ausführung Hallo-Welt

Laden Sie das Hello-World-Image zum Testen herunter.

Bild „hello-world:latest“ kann lokal nicht gefunden werden
neueste: Aus Bibliothek/Hallo Welt ziehen
d1725b59e92d: Ziehen abgeschlossen
Digest: sha256:0add3ace90ecb4adbf7777e9aacf18357296e799f81cabc9fde470971e499788
Status: Neueres Image für „Hello-World:latest“ heruntergeladen

Hallo von Docker!
Diese Meldung zeigt, dass Ihre Installation scheinbar ordnungsgemäß funktioniert.

Um diese Nachricht zu generieren, hat Docker die folgenden Schritte ausgeführt:
 1. Der Docker-Client hat den Docker-Daemon kontaktiert.
 2. Der Docker-Daemon hat das „Hallo-Welt“-Image vom Docker-Hub abgerufen.
 (amd64)
 3. Der Docker-Daemon erstellt aus diesem Image einen neuen Container, der den
 ausführbare Datei, die die Ausgabe erzeugt, die Sie aktuell lesen.
 4. Der Docker-Daemon hat die Ausgabe an den Docker-Client gestreamt, der sie dann
 zu Ihrem Terminal.

Wenn Sie etwas Anspruchsvolleres ausprobieren möchten, können Sie einen Ubuntu-Container mit Folgendem ausführen:
 $ Docker ausführen -it Ubuntu Bash

Geben Sie Bilder frei, automatisieren Sie Workflows und mehr mit einer kostenlosen Docker-ID:
 https://hub.docker.com/

Weitere Beispiele und Ideen finden Sie unter:
 https://docs.docker.com/get-started/

Wenn die obigen Informationen normal ausgegeben werden können, bedeutet dies, dass die Installation erfolgreich war.

Bildbeschleuniger

Manchmal ist es schwierig, Bilder vom Docker Hub in China abzurufen. In diesem Fall können Sie einen Bildbeschleuniger konfigurieren. Docker ist offiziell und viele inländische Cloud-Dienstanbieter bieten inländische Beschleunigerdienste an, beispielsweise Alibaba Cloud, Qiniu Cloud usw.

Ubuntu 14.04-System:

Bearbeiten Sie /etc/default/docker und konfigurieren Sie die Beschleunigeradresse in DOCKER_OPTS:

DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com"

Starten Sie dann den Dienst neu:

$ sudo service docker restart

Ubuntu 16.04+:

Bitte schreiben Sie folgenden Inhalt in /etc/docker/daemon.json (falls die Datei nicht existiert, erstellen Sie bitte eine neue):

{
 "Registrierungsspiegel": [
 „https://registry.docker-cn.com“
 ]
}

Starten Sie dann den Dienst neu:

$ sudo systemctl daemon-reload
$ sudo systemctl starte Docker neu

Prüfen Sie, ob der Beschleuniger wirksam ist

Führen Sie den Befehl „Docker Info“ in der Befehlszeile aus. Wenn Sie die folgende Ausgabe sehen, war die Konfiguration erfolgreich.

Registrierungsspiegel:
 https://registry.docker-cn.com/

- Allgemeine Docker-Befehle

Bevor Sie den Docker-Befehl verwenden, müssen Sie zunächst die Konzepte „Image“ und „Container“ unterscheiden. Empfohlene Referenzlinks

Das gleiche Image startet mehrere Docker-Container. Nachdem diese Container gestartet wurden, sind sie aktiv und voneinander isoliert. Wenn Sie die vorhandene Systemumgebung nach dem Betrieb eines Containers beibehalten möchten, müssen Sie sie übermitteln und speichern.

Startbefehl: docker run

Der folgende Befehl gibt beispielsweise „Hallo Welt“ aus und beendet dann den Container.

$ docker run ubuntu:18.04 /bin/echo 'Hallo Welt'
Hallo Welt

Dies ist kaum von der lokalen Ausführung von /bin/echo „Hallo Welt“ zu unterscheiden.

Der folgende Befehl startet ein Bash-Terminal und ermöglicht Benutzerinteraktion.

$ docker run -it ubuntu:16.04 /bin/bash
root@af8bae53bdd3:/#

Die Option -i hält die Standardeingabe des Containers geöffnet und die Option -t ermöglicht Docker, ein Pseudoterminal (Pseudo-TTY) zuzuweisen und es an die Standardeingabe des Containers zu binden.

Zum Status des Containers zählen im Wesentlichen:

erstellt: wurde erstellt (kann mit dem Befehl „docker ps -a“ aufgelistet werden), wurde aber noch nicht gestartet (kann nicht mit dem Befehl „docker ps“ aufgelistet werden)

Laufen: Laufen

angehalten: Der Containerprozess ist angehalten

Neustart: Der Containerprozess wird gerade neu gestartet

beendet: Der gestoppte Zustand in der obigen Abbildung bedeutet, dass der Container zuvor ausgeführt wurde, jetzt aber gestoppt ist (zu unterscheiden vom erstellten Zustand, der sich auf einen neu erstellten Container bezieht, der noch nicht ausgeführt wurde). Mit dem Startbefehl können Sie es wieder in den laufenden Zustand versetzen.

zerstört: Der Container wurde gelöscht und existiert nicht mehr

Sehen Sie sich das vom aktuellen System abgerufene Bild an:

$Docker-Bilder

Alle gestarteten Container (Status „Aktiv“) im aktuellen System anzeigen

$ Docker-Container ls

oder

$ Docker ps

Alle Container im aktuellen System anzeigen

$ Docker-Container ls -a

oder

$ Docker ps -a

So beenden Sie einen Container:

$ Docker-Container-Stop (ID oder Name)

Oder verlassen Sie das Terminal mit dem Befehl „exit“ oder Strg+d, um den Container zu stoppen.

Geben Sie den Container ein:

$docker attach (ID oder Name)

oder

$docker exec (ID oder Name)

$docker attach wird von diesem Standarddin beendet, was dazu führt, dass der Container angehalten wird.

$docker exec wird von diesem Standarddin beendet, was nicht dazu führt, dass der Container angehalten wird.

Es wird empfohlen, $docker exec zu verwenden

Einen Container löschen: $docker container rm (id oder name)

Bereinigen Sie alle Container im beendeten Zustand $ docker container prune

- Installieren Sie Jupyter

Betreten Sie zunächst den Container:

$ docker run -i -t ubuntu:16.04 /bin/bash

Dieser Vorgang ist grundsätzlich derselbe wie die Installation von Jupyter auf dem Ubuntu-System, allerdings ist das Ubuntu im Container eine minimalistische Umgebung und das Paket python-dev ist nicht installiert.

#Apt-get-Umgebung aktualisieren apt-get update

#Installieren Sie das Python-Entwicklerpaket apt-get install python-dev

#Jupyter installieren
pip installieren jupyter

Standardmäßig kann auf Jupyter nur über eine lokale Adresse zugegriffen werden. Sie müssen die Konfiguration lockern, um den Remotezugriff auf Jupyter zu ermöglichen. Wenn Sie den Fernzugriff aktivieren, müssen Sie ein Kennwort festlegen. Die Konfigurationsdatei von Jupyter unterstützt nur verschlüsselte Chiffretextkennwörter.

#Jupyter-Konfigurationsdatei generieren, dadurch wird die Konfigurationsdatei .jupyter/jupyter_notebook_config.py generiert
Jupyter Notebook - Konfiguration generieren

#Verwenden Sie ipython, um ein Passwort zu generieren In [1]: from notebook.auth import passwd
In [2]: passwd()
Passwort eingeben: 
Kennwort bestätigen: 
Aus[2]: 'sha1:******'

#Ändern Sie die folgenden Parameter in der Konfigurationsdatei .jupyter/jupyter_notebook_config.py c.NotebookApp.ip='*' #Binden Sie alle Adressen c.NotebookApp.password = u'Das gerade generierte Passwort'
c.NotebookApp.open_browser = False #Gibt an, ob nach dem Start automatisch im Browser geöffnet werden soll c.NotebookApp.port = 8888 #Geben Sie einen Zugriffsport an. Der Standardwert ist 8888. Achten Sie auf den entsprechenden zugeordneten Docker-Port

Nachdem die Konfiguration abgeschlossen ist, können Sie Jupyter mit dem Befehl jupyter notebook starten. Wenn Sie den Root-Benutzer direkt im Container verwenden, lautet der Befehl zum Starten von Jupyter jupyter notebook --allow-root.

Der letzte Befehl lautet:

docker run -it --name jupytertest -p 8888:8888 -v ~/mnt:/mnt jupyter-ubuntu:v1 su root -c 'jupyter notebook --allow-root'

-p ist die Portzuordnung, -v ist die Pfadeinbindungszuordnung.

Nach dem erfolgreichen Start verwenden Sie http://ubuntu-ip:8888 für den Zugriff.

Ergänzung: Erstellen Sie einen Remote-Jupyter auf Docker

Verwenden Sie den Befehl im Docker-Container auf dem Remote-Server

jupyter notebook --port=8888 --allow-root

Sie können Jupyter ausführen.

Beachten Sie, dass Sie --port=8888 weglassen können, wenn der Port des aktuellen Docker-Containers 8888 ist. Wenn der Port des aktuellen Docker-Containers nicht 8888 ist, müssen Sie den Port so angeben, dass er beim Ausführen von Jupyter mit dem Port des aktuellen Docker-Containers übereinstimmt.

Wenn Sie den Port des aktuellen Docker-Containers vergessen haben, können Sie den Befehl außerhalb von Docker verwenden

Docker PS

Überprüfen.

Nach dem Ausführen von Jupyter werden auf der Schnittstelle eine Reihe protokollähnlicher Dinge ausgegeben. wie folgt:

Behalten Sie die aktuelle Schnittstelle bei und zeichnen Sie das Token auf (den rot umrandeten Teil).

Geben Sie nach dem Ausführen die IP des Remote-Servers in den lokalen Browser ein: die Portnummer des Docker-Containers, auf dem Jupyter ausgeführt wird. Beispiel: 192.168.0.101:8888.

Die Anmeldeoberfläche sieht wie folgt aus:

Wenn Sie kein Passwort festlegen möchten, können Sie sich direkt mit dem Token anmelden.

Wenn Sie ein Kennwort festlegen möchten, können Sie zum Festlegen des Kennworts ein Token verwenden. Bei Ihrer nächsten Anmeldung können Sie anstelle des Tokens direkt das Passwort verwenden.

Das Obige ist meine persönliche Erfahrung. Ich hoffe, es kann Ihnen als Referenz dienen. Ich hoffe auch, dass Sie 123WORDPRESS.COM unterstützen werden. Sollten dennoch Fehler oder unvollständige Überlegungen vorliegen, freue ich mich über eine Korrektur.

Das könnte Sie auch interessieren:
  • Lösung zur unvollständigen Anzeige der Jupyter-Notebook-Ausgabe
  • Lösen Sie das Problem, dass nach dem Starten des Jupyter-Notebooks kein Token vorhanden ist
  • Zusammenfassung der Tastenkombinationen für Jupyter Notebooks in Python
  • Beheben Sie das Problem, dass Jupyter-Notebook den Standardbrowser nicht öffnet
  • Das Terminal kann das Modul importieren, um das Problem zu lösen, dass das Jupyter-Notebook nicht importiert werden kann
  • Lösung für den Fehler, wenn Jupyter Notebook eine CSV-Datei liest
  • Lösung für das Problem, dass Bilder im Jupyter-Notebook nicht angezeigt werden können
  • So geben Sie das Startverzeichnis im Jupyter-Notebook an
  • So lösen Sie das Problem der unscharfen Bildanzeige im Jupyter-Notebook und speichern klare Bilder

<<:  Webdesign-Referenz Firefox-Standardstil

>>:  Web 2.0: Ursachen und Lösungen der Informationsüberflutung

Artikel empfehlen

Detailliertes Tutorial zur Tomcat-Installation und -Bereitstellung in Windows 10

Inhaltsverzeichnis 1 Konfiguration der Java-Umgeb...

Der Unterschied zwischen char und varchar in MySQL

CHAR- und VARCHAR-Typen sind ähnlich und untersch...

Verwendung des Fokus-innerhalb-Selektors von CSS3

Pseudoelemente und Pseudoklassen Apropos, schauen...

Implementierung des Docker View Container Log-Befehls

Warum sollten wir das Protokoll lesen? Wenn beisp...

Docker verwendet Root, um in den Container zu gelangen

Führen Sie zuerst den Docker-Container aus Führen...

10 Tipps zur Website-Benutzerfreundlichkeit, die jeder kennen sollte

Lassen Sie uns keine weitere Zeit verschwenden un...

Zusammenfassung der allgemeinen MySQL-Funktionen

Vorwort: Die MySQL-Datenbank bietet eine breite P...

Dieser Artikel zeigt Ihnen, wie Sie Vue 3.0 responsive verwenden

Inhaltsverzeichnis Anwendungsfälle Reaktive API-b...

Zusammenfassung der Verwendung von MySQL-Datums- und Uhrzeitfunktionen

Dieser Artikel basiert auf MySQL 8.0 Dieser Artik...

CSS Lieferadresse Parallelogramm Linienstil Beispielcode

Der Code sieht folgendermaßen aus: // Linienstil ...

jQuery-Plugin zur Implementierung des Minesweeper-Spiels (1)

Dieser Artikel teilt den spezifischen Code des er...

Detaillierte Erklärung der Datentypen in den JavaScript-Grundlagen

Inhaltsverzeichnis 1. Datentyp 1.1 Warum brauchen...