Ich habe ein Docker-Image mit Python-Bibliotheken und Jupyter erstellt. Ich starte den Container mit der Option -p 8888:8888
, Ports zwischen Host und Container zu verbinden. Wenn ich einen Jupyter-Kernel im Container starte, läuft er weiter localhost:8888
(und findet keinen Browser). Ich habe den Befehl benutztjupyter notebook
Aber von meinem Host aus, welche IP-Adresse muss ich verwenden, um mit Jupyter im Browser des Hosts zu arbeiten?
Mit dem Befehl ifconfig
, finde ich eth0
, docker
, wlan0
, lo
...
Vielen Dank !
python
docker
jupyter-notebook
J. Guillaumin
quelle
quelle
nvidia-docker
.docker ps
). Zweitens müssen Sie überprüfen, ob Ihr Port tatsächlich an Ihren Host weitergeleitet wird.jupyter notebook --ip 0.0.0.0 --no-browser
In einen Browser (ost):localhost:8888/tree
Antworten:
Sie müssen Ihr Notebook ausführen auf
0.0.0.0
:jupyter notebook -i 0.0.0.0
. Wenn Sie auf localhost ausgeführt werden, ist es nur im Container verfügbar.quelle
docker run -it -p 8888:8888 image:version
Container:jupyter notebook --ip 0.0.0.0 --no-browser
Host:localhost:8888/tree
--allow-root
! Es kommt von einem Sicherheitsproblem von Jupyter. Oder Sie können die Konfigurationsdatei so~/.jupyter.
--port XXXX
mit ,jupyter
falls Sie mit einem anderen Port veröffentlichendocker run
als die jupyter Standard 8888. Sie enthalten auch müssen--allow-root
mit dem jupyter Anruf.Host-Maschine:
docker run -it -p 8888:8888 image:version
Im Container:
jupyter notebook --ip 0.0.0.0 --no-browser --allow-root
Host-Computer greifen auf diese URL zu:
localhost:8888/tree
Wenn Sie sich zum ersten Mal anmelden, wird auf dem Terminal ein Link angezeigt, über den Sie sich mit einem Token anmelden können.
quelle
docker run -it -p 8899:8888 image:version
:localhost:8899/tree
Der
docker run
Befehl ist obligatorisch, um einen Port für den Container zu öffnen, damit die Verbindung über einen Host-Browser hergestellt werden kann. Weisen Sie den Port dem Docker-Container mit -p zu. Wählen Sie Ihr Jupyter-Image ausdocker images
.docker run -it -p 8888:8888 image:version
Starten Sie im Container das Notizbuch, das den von Ihnen geöffneten Port zuweist:
jupyter notebook --ip 0.0.0.0 --port 8888 --no-browser --allow-root
Greifen Sie über Ihren Desktops-Browser unter http: // localhost: 8888 auf das Notizbuch zu. Das Notizbuch fordert Sie zur Eingabe eines Tokens auf, das beim Erstellen des Notizbuchs generiert wurde.
quelle
-v
Option für den Docker-Ausführungsbefehl nicht angegeben ist, wird kein Speicher für den Host freigegeben. Um ein Volume für die Freigabe zuzuordnen,-v /path/to/host/source:/container/path/to/src
kann so etwas wie verwendet werden. Aber seien Sie vorsichtig, das verbirgt alles, was der Container haben könnte/container/path/to/src
.So erhalten Sie den Link zu Ihrem Jupyter-Notebook-Server:
Nach Ihrem
docker run
Befehl sollte automatisch ein Hyperlink generiert werden. Es sieht ungefähr so aus:http://localhost:8888/?token=f3a8354eb82c92f5a12399fe1835bf8f31275f917928c8d2 :: /home/jovyan/work
Wenn Sie den Link später erneut erhalten möchten, können Sie eingeben
docker exec -it <docker_container_name> jupyter notebook list
.quelle
jupyter notebook list
funktioniert aufgrund dieses Problems nicht :(hostname -I
, um die IP Ihres Remote-Servers abzurufen (wenn Sie einen Remote-Host verwenden). Ersetzen Sie dann "localhost" in der URL durch die IP.-it
Ihren ursprünglichendocker run
Befehl angeben und in PyCharm Professional ausgeführt werden, können Sie einfach auf den Link imAttached Console
Fenster klicken . Wenn Sie es nur über die Shell ausführen, können Sie in Ihrer Shell möglicherweise auf den Link klicken oder nicht.Im Folgenden wird beschrieben, wie ich es unter Windows 7 mit der Docker-Toolbox zum Laufen bringe.
Wenn Sie die Docker-Toolbox verwenden, öffnen Sie das Docker-Schnellstartterminal und notieren Sie die IP hier:
docker is configured to use the default machine with IP 192.168.99.100 For help getting started, check out the docs at https://docs.docker.com
Sobald Sie die Docker-Befehle von der Tensorflow-Installationswebsite ausgeführt haben :
docker pull tensorflow/tensorflow # Download latest image docker run -it -p 8888:8888 tensorflow/tensorflow # Start a Jupyter notebook server
Sie erhalten eine Nachricht wie folgt:
Copy/paste this URL into your browser when you connect for the first time, to login with a token: http://127.0.0.1:8888/?token=d6e80acaf08e09853dc72f6b0f022b8225f94f
Ersetzen Sie auf dem Host 127.0.0.1 durch 192.168.99.100 und verwenden Sie den Rest dieser URL
quelle
-p <host port>:<container port>
korrekt angeben . Wenn Sie es beispielsweise auf dem Container ausführen möchten5000
, aber hosten möchten8888
, verwenden Sie-p 8888:5000
und stellen Sie sicher, dass--expose 5000
. Abhängig von Ihrer spezifischen Konfiguration müssen Sie möglicherweise angeben-p 127.0.0.1:8888:5000
, um vom Host aus darauf zugreifen zu können. (Mir ist klar, dass es über ein Jahr her ist, seit Sie das gefragt haben, aber ich dachte, ich würde jedem helfen, der die gleiche Frage hat.)Sie können den Befehl verwenden
jupyter notebook --allow-root --ip[of your container]
oder mit der Option Zugriff auf alle IP-Adressen gewähren--ip0.0.0.0
.quelle
Im Container können Sie Folgendes ausführen, um es auf Ihrem lokalen Computer verfügbar zu machen (unter Verwendung der IP-Adresse Ihres Docker-Computers).
jupyter notebook --ip 0.0.0.0 --allow-root
Abhängig von der Einrichtung Ihres Containers müssen Sie möglicherweise nicht das Flag --allow-root angeben.
quelle
Schauen Sie sich das Torus-Projekt an, das Manifold kürzlich als Open-Source- Projekt bereitgestellt hat. Wir wollten unseren ML-Ingenieuren eine einfache Möglichkeit bieten, neue Projekte mit einer konsistenten Entwicklungsumgebung im gesamten Team in Angriff zu nehmen. Dieser Python-Ausstecher erstellt eine neue Projektstruktur für Sie, die eine Docker-Datei enthält, die ein vorgefertigtes ML-Entwicklungsimage verwendet, das wir in Docker Hub eingefügt haben, und eine Docker Compose-Konfiguration, die die gesamte Portweiterleitung für Sie übernimmt. Die Konfiguration wurde geschrieben, um einen offenen Port auf Ihrem Host-Computer auszuwählen und an den Notebook-Server weiterzuleiten, der auf 8888 im Container ausgeführt wird. Kein Problem mehr beim Ausführen mehrerer Notebook-Server auf Ihrem Computer! Probieren Sie es aus, hoffentlich ist dies hilfreich!
Github-Repo: https://github.com/manifoldai/docker-cookiecutter-data-science
Warum wir es gebaut haben (mit Demo): https://medium.com/manifold-ai/torus-a-toolkit-for-docker-first-data-science-bddcb4c97b52
quelle
Alternativ zum Erstellen eines eigenen Docker-Images können Sie auch das ML Workspace- Image verwenden. Der ML Workspace ist eine Open-Source-Web-IDE, die Jupyter, VS Code, eine Desktop-GUI und viele andere Tools und Bibliotheken in einem praktischen Docker-Image kombiniert. Das Bereitstellen einer einzelnen Arbeitsbereichsinstanz ist so einfach wie:
docker run -p 8080:8080 mltooling/ml-workspace:latest
Alle Tools sind über denselben Port zugänglich und in die Jupyter-Benutzeroberfläche integriert. Weitere Dokumentation finden Sie hier .
quelle
Docker-Lauf -i -t -p 8888: 8888 Continuumio / Anaconda3 / bin / Bash -c "/ opt / conda / bin / conda install jupyter -y --quiet && mkdir / opt / notebooks && / opt / conda / bin / jupyter notebook --notebook-dir = / opt / notebooks --ip = '*' --port = 8888 --no-browser --allow-root "
Ich musste --allow-root zum Befehl hinzufügen und jetzt läuft es
quelle