[PYTHON] Für diejenigen, die nicht wissen, wie man ein Passwort mit Jupyter auf Docker festlegt

Einführung

Ich möchte maschinelles Lernen ausprobieren → Tensorflow, richtig? Ich möchte es interaktiv im Web ausprobieren → Jupyter, oder? Ich möchte einfach eine Infrastruktur aufbauen → Docker, oder? Also habe ich es versucht, aber ich blieb stecken, wo ich das Passwort festlegen sollte, also werde ich die Lösung schreiben

Angenommener Leser

Diejenigen, die sich für Folgendes bewerben

――Ich bin ein Infrastrukturingenieur, aber ich möchte maschinelles Lernen ausprobieren

Gründe für die Verwendung von Docker

Grundsätzlich würde ich es gerne mit meinem MacBook Air ausprobieren, aber offensichtlich habe ich nicht genügend Ressourcen. Wenn Sie es also fest tun möchten, ist die beste Lösung in der Cloud wie AWS oder GCP. Ich möchte es lokal treffen und dann in die Cloud bringen, daher ist Docker die einfachste und beliebteste Sache. Das Erstellen eines Jupyter ist mühsam, daher ist es wirklich einfach, einen Container zu verwenden, der alles enthält. (Wenn Sie versuchen, es in Ansible oder Chef zu setzen, bleibt es auf verschiedene Weise stecken ...)

Holen Sie sich ein Bild

Holen Sie sich zuerst das Bild. Es gibt verschiedene Arten von Jupyter-Bildern. Wählen Sie also eines entsprechend Ihrem Zweck aus. https://github.com/jupyter/docker-stacks

Ich möchte dieses Mal Tensorflow verwenden, daher werde ich Folgendes verwenden. https://github.com/jupyter/docker-stacks/tree/master/tensorflow-notebook

Docker ziehen lass uns ziehen

$ docker pull jupyter/tensorflow-notebook
Unable to find image 'jupyter/tensorflow-notebook:latest' locally
latest: Pulling from jupyter/tensorflow-notebook
75a822cd7888: Pulling fs layer 
f74dd7a42a1f: Pulling fs layer 
7b03c47d9699: Pull complete 
ecef67eb4d88: Pull complete 
bd6c8cee2aa9: Pull complete 
8ecf884c467a: Pull complete 
7dc68d7c7ffd: Pull complete 
3369a456e292: Pull complete 
e626c4a34300: Pull complete 
619d5c673fb7: Pull complete 
eff746881b74: Pull complete 
fae5187ea9e1: Pull complete 
e1fd76e4adb2: Pull complete 
b5d2ba91f6a5: Pull complete 
5804e217f19f: Pull complete 
7719a427e59f: Pull complete 
33ea9d473883: Pull complete 
d28a865b24f6: Pull complete 
7e2fa13ce090: Pull complete 
15b63cba13fd: Pull complete 
adcb147a9782: Pull complete 
ce56ab01574f: Pull complete 
aa6a6ae0b01e: Pull complete 
2c54a9d73fcd: Pull complete 
47c2872f3870: Pull complete 
Digest: sha256:dd7b9e81c167647a87300043f21e3b37eee6d463815b86db9976c299cd4cc046
Status: Downloaded newer image for jupyter/tensorflow-notebook:latest
101e77006b40935607969dbad87e4540719ec55e66168d507f0ea8bb04ffe713

wichtiger Punkt

Möglicherweise wird ein Fehler angezeigt (siehe unten).

$ docker pull jupyter/tensorflow-notebook
Unable to find image 'jupyter/tensorflow-notebook:latest' locally
latest: Pulling from jupyter/tensorflow-notebook
75a822cd7888: Pulling fs layer 
f74dd7a42a1f: Pulling fs layer 
f74dd7a42a1f: Pull complete 
ecef67eb4d88: Download complete 
bd6c8cee2aa9: Download complete 
8ecf884c467a: Download complete 
7dc68d7c7ffd: Download complete 
3369a456e292: Download complete 
e626c4a34300: Download complete 
619d5c673fb7: Download complete 
eff746881b74: Download complete 
fae5187ea9e1: Download complete 
e1fd76e4adb2: Download complete 
b5d2ba91f6a5: Downloading 96.62 MB/660.8 MB
5804e217f19f: Download complete 
7719a427e59f: Downloading 126.5 MB/281.6 MB
33ea9d473883: Download complete 
d28a865b24f6: Downloading 314.1 MB/314.1 MB
7e2fa13ce090: Waiting 
15b63cba13fd: Waiting 
adcb147a9782: Waiting 
ce56ab01574f: Waiting 
aa6a6ae0b01e: Waiting 
2c54a9d73fcd: Waiting 
47c2872f3870: Waiting 
docker: write /var/lib/docker/tmp/GetImageBlob222925529: no space left on device.
See 'docker run --help'.

Die Ursache ist, dass das Bild etwa 5 G groß ist, sodass die Kapazität anscheinend nicht ausreicht. Wenn Sie also andere Bilder löschen, ist dies in Ordnung (der neuronale Stil ist zu groß).

$ docker images
REPOSITORY                         TAG                 IMAGE ID            CREATED             SIZE
poppen/trusty-ansible-serverspec   latest              e84a5c7341fd        10 weeks ago        691 MB
flyinprogrammer/serverspec         latest              1b34b62345b3        12 weeks ago        154.4 MB
somatic/torch-fast-neural-style    latest              97645d9c69e8        3 months ago        7.323 GB
amazon/amazon-ecs-agent            latest              a76825ffa321        3 months ago        10.84 MB
elenaalexandrovna/opencv-python3   latest              910fcd0fa477        4 months ago        594.7 MB
trafferty/docker-ipython-opencv    latest              686f355ae522        19 months ago       8.676 GB
$ docker rmi a76825ffa321 910fcd0fa477 97645d9c69e8
Untagged: amazon/amazon-ecs-agent:latest
Untagged: amazon/amazon-ecs-agent@sha256:391a45a5b69a8d9fe1844310c4cf90e82e31cb167a93eb94d5a49b2b2456ad46
Deleted: sha256:a76825ffa321686b2df70a0be52fe5ecd52006a347cee5f07635b188655a5e86
...

Starten Sie den Container zur Erfassung des Hashwerts

$ docker run -it --rm -p 8888:8888 jupyter/tensorflow-notebook
1b11efc02512ab60a26909ced181a16e01db57160607bb5c54c2acacae30a20b
$ docker ps
CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS              PORTS                    NAMES
fb31e1a2fda1        jupyter/tensorflow-notebook   "tini -- start-notebo"   6 seconds ago       Up 1 seconds        0.0.0.0:8888->8888/tcp   thirsty_kilby

Selbst wenn Sie auf http: // localhost: 8888 zugreifen, wird bei dieser Rate nur der Kennwortbildschirm angezeigt.

Hash-Wert abrufen

Starten Sie bash in einem Container mit Docker Exec

$ docker exec -it fb31e1a2fda1 /bin/bash

Führen Sie es in Python aus, geben Sie das Kennwort ein, das Sie zweimal festlegen möchten, und rufen Sie den Hashwert des Kennworts ab. Im folgenden Beispiel lautet der Hash-Wert sha1: hogehoge: fugafuga.

< python -c 'from notebook.auth import passwd;print(passwd())'               
Enter password: 
Verify password: 
sha1:hogehoge:fugafuga
jovyan@fb31e1a2fda1:~/work$ exit
exit

Wenn angebracht

Wenn Sie Docker anhängen, wird es an die Standardeingabe / -ausgabe von start-notebook.sh angehängt, die beim Starten des Containers ausgeführt wird, und Sie können keine Python-Befehle eingeben.

$ docker attach fb31e1a2fda1

★ Ich kann keine Befehle ausführen (nur das Protokoll betrachten)

ç^C[I 13:28:14.809 NotebookApp] Interrupted...
[I 13:28:14.810 NotebookApp] Shutting down kernels
$ 

Container löschen

Löschen Sie diesen Container, da er nicht mehr verwendet wird

$ docker ps
CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS              PORTS                     NAMES
fb31e1a2fda1        jupyter/tensorflow-notebook   "tini -- start-notebo"   10 minutes ago      Up 10 minutes       0.0.0.0:32768->8888/tcp   tender_snyder
$ docker stop fb31e1a2fda1
fb31e1a2fda1
$ docker rm fb31e1a2fda1
fb31e1a2fda1
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Anlaufen

Starten Sie den Container schließlich mit dem festgelegten Passwort Fügen Sie den zuvor erhaltenen Hash-Wert sha1: hogehoge: fugafuga in den Wert der Option NotebookApp.password in start-notebook.sh ein und führen Sie ihn aus.

docker run -d -p 8888:8888 jupyter/tensorflow-notebook start-notebook.sh --NotebookApp.password='sha1:hogehoge:fugafuga'

Jetzt können Sie zu http: // localhost: 8888 gehen und das oben festgelegte Passwort eingeben, um sich anzumelden. Danach spielen Sie bitte mit MNIST.

Beiseite

Sie können den Befehl openssl verwenden, oder? Ich habe folgendes getan, aber es hat nicht funktioniert

$ echo [password] | openssl sha1

Ich dachte sha1 wäre sha1, aber warum? Ist das Format anders?

Referenz

Recommended Posts

Für diejenigen, die nicht wissen, wie man ein Passwort mit Jupyter auf Docker festlegt
So richten Sie ein Jupyter-Notebook am SSH-Ziel ein (AWS EC2)
Treten Sie Azure mit Go ~ bei Für diejenigen, die Azure mit Go ~ starten und kennenlernen möchten
Checkliste, wie Sie vermeiden können, die Elemente des Numpy-Arrays mit for zu drehen
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
Für diejenigen, die Jupyter Notebook bereits nach 1 Sekunde verwenden möchten, da sie das Passwort nicht kennen
So legen Sie einen freigegebenen Ordner mit dem Host-Betriebssystem in CentOS7 auf Virtual BOX fest
Der erste Schritt des maschinellen Lernens ~ Für diejenigen, die versuchen möchten, mit Python zu implementieren ~
Wie man ein praktisches Seminar mit Jupyter mit Docker abhält
So erstellen Sie eine Django (Python) -Umgebung auf Docker
Für diejenigen, die Python mit vim schreiben möchten
Ein Memo darüber, wie man das schwierige Problem der Erfassung von FX mit AI überwinden kann
So richten Sie WSL2 unter Windows 10 ein und erstellen eine Lernumgebung für Linux-Befehle
Wie man die Anzahl der GPUs aus Python kennt ~ Hinweise zur Verwendung von Multiprocessing mit pytorch ~
Ich war für die Pflege des Fabric-Skripts verantwortlich, weiß es aber nicht.> <Für diejenigen, die
Verwendung von GitHub auf einem Server für mehrere Personen ohne Kennwort
Für diejenigen, die mit TensorFlow2 maschinelles Lernen beginnen möchten
So zeigen Sie eine Liste der mit pyenv installierbaren Versionen an
So registrieren Sie ein Paket in PyPI (Stand September 2017)
[Django lernt mit der Klinge des Teufels] So erhalten Sie einen Abfragesatz für die Vorwärts- / Rückwärtsreferenz
Ein modernes Verfahren zum Erstellen von Umgebungen für diejenigen, die sofort mit Python beginnen möchten
[Kurzer Satz] easygui für diejenigen, die sehr einfach eine einfache GUI mit Python verwenden möchten
Sie dort, die Rails sowohl auf dem Host als auch auf dem Client mit Docker Compose starten möchten!
Schnelle Schritte zum Erstellen einer maschinellen Lernumgebung mit Jupyter Notebook unter macOS Sierra mit anaconda
Für Sie, die beim Lernen mit maschinellem Lernen plötzlich auf das Protokoll schauen ~ Muskeltraining mit LightGBM ~
So stellen Sie cron für reguläres Python-Scraping auf dem Sakura-Server ein.
So legen Sie eine Verknüpfung fest, um in IBus zwischen voller und halber Breite zu wechseln
Eine einfache Möglichkeit, Jupyter Notebook / Lab zu starten und ein Kennwort festzulegen
PyPI-Registrierungsverfahren für diejenigen, die ihr PyPI-Debüt geben möchten
Starten eines mit Jupyter Notebook erstellten Python-Programms
Beachten Sie, was Sie getan haben, um Flycheck mit Python zu verwenden
Ich habe versucht, das Entwicklungsstartverfahren von Django kurz zusammenzufassen
So erstellen Sie eine Bezeichnung (Maske) für die Segmentierung mit labelme (semantische Segmentierungsmaske)
So führen Sie Jupyter und Spark auf einem Mac mit minimalen Einstellungen aus
So verwenden Sie das Jupyter-Notebook, ohne Ihre Umgebung mit Docker zu verschmutzen
Ich weiß nicht, wie ich Abfrageparameter in GAE / P erhalten soll
Verwendung von Jupyter am Frontend von Spacon ITO
Node.js: So töten Sie Nachkommen eines Prozesses, der von child_process.fork () gestartet wurde
Nachbarschaftssuche nach einer Reihe von (geografischen Koordinaten) Punkten auf einer Kugel
Python-Technik für diejenigen, die Anfänger loswerden wollen
Jetzt ist es an der Zeit, DB mit Docker zu installieren! DB-Installation für Anfänger auf Docker
Ein Memo für diejenigen, die eine schnelle Socket-Kommunikation mit Netcat wünschen
So finden Sie heraus, wann Sie das Java-Installationsverzeichnis nicht kennen
Kommentar zu Unparteilichkeit und Beständigkeit für diejenigen, die sich nicht verlieben
So führen Sie den Übungscode des Buches "Profitable KI mit Python erstellen" in Google Colaboratory aus
Was tun, wenn Sie einen SSH-Schlüssel hätten setzen sollen, aber nach einem Passwort gefragt werden?
So löschen Sie einen Docker-Container
[AtCoder für Anfänger] Sprechen Sie über den Rechenaufwand, den Sie grob wissen möchten
[EC2] So machen Sie mit Selen eine Bildschirmaufnahme Ihres Smartphones
[Kleine Geschichte] So speichern Sie Matplotlib-Diagramme in einem Stapel mit Jupyter
Für diejenigen, die Keras oder TensorFlow nicht auf einer GPU mit macOS Sierra ausführen können
Verstehen, wie Bilder auf Jupyter angezeigt werden (Verwendung von imshow / matplotlib von OpenCV)
[Einführung in Python] So sortieren Sie den Inhalt einer Liste effizient mit Listensortierung
Ich habe ein Systemkonfigurationsdiagramm mit Diagrams on Docker geschrieben
Wie zeichnet man eine vertikale Linie auf einer Heatmap, die mit Python Seaborn gezeichnet wurde?
Links zum Umgang mit Jupyter-Notebooks unter Docker unter Ubuntu unter VirtualBox unter macOS mit SSH
Versuchen Sie, ein festgelegtes Problem der High-School-Mathematik mit Python zu lösen
Zusammenfassung zum Erstellen einer LAMP + Wordpress-Umgebung mit Sakura VPS
Wenn Sie nicht wissen, wie Sie das gewünschte Diagramm mit matplotlib zeichnen sollen, können Sie sich die Galerie bequem ansehen
Umgang mit "^ [[A ^ [[B ^ [[C ^ [[D"]] beim Drücken der Richtungstaste beim Ausführen von Python auf dem Mac