Verwenden Sie Docker, um die erforderlichen Bibliotheken und Dateien als Docker-Image und Docker-Last auf einem anderen Server zu konsolidieren, da Python-Bibliotheken wie Numpy und Pandas in einer Umgebung verarbeitet werden müssen, die nicht mit dem Internet verbunden ist. Ich werde das Verfahren von zusammenfassen. Wir würden uns freuen, wenn Sie uns mitteilen könnten, ob es inhaltliche Fehler oder Punkte gibt, die korrigiert werden müssen.
Installieren Sie Docker von Homebrew und starten Sie Docker.app anhand dieses Artikels. So installieren Sie Docker unter Mac OS mit Homebrew --Qiita
Ich habe Docker gestartet. Ich habe das Tutorial ignoriert, daher ist es in einem sauberen Zustand. Durch Starten von Docker können Sie den Docker-Befehl auf dem Terminal eingeben. Außerdem wird Docker.app (GUI-Bildschirm) danach nicht mehr verwendet, sodass es in Ordnung ist, es zu schließen.
kaz@Kaz-MBP ~ % docker --version
Docker version 19.03.12, build 48a66213fe
Danach gehen wir davon aus, dass wir den Unterschied zwischen "Bild" und "Container" verstehen. In Bezug auf "Bild" und "Container" gefallen mir die Erklärungen auf den folgenden Websites persönlich, da sie leicht zu verstehen sind. Unterschied zwischen Docker-Container und Image | Hacknote
Ich werde mein Bestes tun, um von nun an ein Docker-Image zu erstellen, aber anscheinend ist es der Mainstream, ein Original-Docker-Image basierend auf einem anderen Docker-Image zu erstellen, anstatt ein Docker-Image von Grund auf neu zu erstellen, also mache ich es auch Ich werde nachahmen. Dieses Mal brauche ich Python und die dazugehörigen Bibliotheken, daher möchte ich es auf das Docker-Image stützen, auf dem Miniconda3 war. continuumio/miniconda3 - Docker Hub
Lass es uns jetzt ziehen.
kaz@Kaz-MBP ~ % docker pull continuumio/miniconda3
Using default tag: latest
latest: Pulling from continuumio/miniconda3
68ced04f60ab: Pull complete
9c388eb6d33c: Pull complete
96cf53b3a9dd: Pull complete
Digest: sha256:456e3196bf3ffb13fee7c9216db4b18b5e6f4d37090b31df3e0309926e98cfe2
Status: Downloaded newer image for continuumio/miniconda3:latest
docker.io/continuumio/miniconda3:latest
Wenn der Pull abgeschlossen ist, können Sie das Ergebnis mit dem Befehl "Docker-Bilder" überprüfen (siehe unten). Es ist in Ordnung, wenn ein Repository mit dem Namen continuumio / miniconda3 registriert ist. Das gleiche Ergebnis wird mit "Docker-Bild ls" angezeigt.
kaz@Kaz-MBP ~ % docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
continuumio/miniconda3 latest b4adc22212f1 6 months ago 429MB
Versuchen Sie nun, von diesem miniconda3 Docker-Image aus den Container mit dem Befehl docker run --rm -it continuumio / miniconda3
auszuführen.
kaz@Kaz-MBP ~ % docker run --rm -it continuumio/miniconda3
(base) root@8993959bca74:/#
---- rm ist eine Option zum automatischen Löschen des Containers nach dem Schließen des Containers (Docker-Image wird nicht gelöscht) --- Es ist eine Option zum Arbeiten mit Containern in einer interaktiven Shell --continuumio / miniconda3 ist der Name des Docker-Bildes, einschließlich des Schrägstrichs (kein Symbol).
Bei der Ausführung ändert sich die Eingabeaufforderungsanzeige auf der linken Seite des Terminals. In diesem Zustand können Sie erwartungsgemäß einen Container aus dem Docker-Image erstellen und mit einer interaktiven Shell betreiben.
(base) root@8993959bca74:/# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
(base) root@8993959bca74:/#
(base) root@8993959bca74:/# conda info -e
# conda environments:
#
base * /opt/conda
(base) root@8993959bca74:/#
(base) root@8993959bca74:/# python --version
Python 3.7.6
Geben Sie "exit" ein, um den Container zu verlassen. Da die Option "--rm" hinzugefügt wurde, als der Befehl "run" ausgeführt wurde, verschwindet der zu diesem Zeitpunkt ausgeführte Container.
(base) root@8993959bca74:/# exit
exit
kaz@Kaz-MBP ~ %
kaz@Kaz-MBP ~ % python --version
Python 2.7.16
Nachdem wir bestätigt haben, dass dieses Docker-Image verwendet werden kann, erstellen wir darauf basierend ein Original-Docker-Image.
Die Docker-Datei entspricht der Entwurfszeichnung, die zum Erstellen des ursprünglichen Docker-Images erforderlich ist. In der Docker-Datei müssen Sie das Basis-Docker-Image und den Befehl definieren, den Sie ausführen möchten. Erstellen Sie dieses Mal während der Installation von numpy, pandas und jupyter notebook eine Docker-Datei im Verzeichnis / usr / workspace, um ein Docker-Image mit einem lokal erstellten Python-Skript zu erstellen.
FROM continuumio/miniconda3
RUN conda install numpy pandas jupyter -y
RUN mkdir /usr/workspace/
COPY helloworld.py /usr/workspace/
--FROM gibt das ursprüngliche Docker-Image an
Erstellen Sie nun ein Docker-Image aus dieser Docker-Datei. Führen Sie nach "cd" in dem Verzeichnis, in dem die Docker-Datei gespeichert ist, den Befehl "docker build -t test." Aus. --- t gibt einen Namen für das diesmal erstellte Docker-Image an. Diesmal habe ich es nicht genannt. --Das letzte. Gibt das Verzeichnis an, in dem die Docker-Datei gespeichert ist. Dieses Mal ist es ".", Um das aktuelle Verzeichnis anzugeben.
kaz@Kaz-MBP qiita % docker build -t test .
Sending build context to Docker daemon 3.072kB
Step 1/4 : FROM continuumio/miniconda3
---> b4adc22212f1
Step 2/4 : RUN conda install numpy pandas jupyter -y
---> Running in fce2bbf772f7
Collecting package metadata (current_repodata.json): ...working... done
Solving environment: ...working... failed with initial frozen solve. Retrying with flexible solve.
Solving environment: ...working... failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): ...working... done
Solving environment: ...working... done
## Package Plan ##
environment location: /opt/conda
added / updated specs:
- jupyter
- numpy
- pandas
The following packages will be downloaded:
package | build
---------------------------|-----------------
(Weggelassen)
Preparing transaction: ...working... done
Verifying transaction: ...working... done
Executing transaction: ...working... done
Removing intermediate container fce2bbf772f7
---> 1b4aaad5eec1
Step 3/4 : RUN mkdir /usr/workspace/
---> Running in 3c29b1840f3b
Removing intermediate container 3c29b1840f3b
---> 6b9931871d40
Step 4/4 : COPY helloworld.py /usr/workspace/
---> bf07bc8332af
Successfully built bf07bc8332af
Successfully tagged test:latest
kaz@Kaz-MBP qiita %
Da die Docker-Datei insgesamt 4 Zeilen enthielt, wird der Fortschritt als Schritt n / 4 angezeigt. Überprüfen Sie nach dem Erstellen des Docker-Images das Ergebnis wie zuvor mit dem Befehl "Docker-Images".
kaz@Kaz-MBP qiita % docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test latest bf07bc8332af 40 seconds ago 2.46GB
continuumio/miniconda3 latest b4adc22212f1 6 months ago 429MB
kaz@Kaz-MBP qiita %
Ein Bild mit dem Namen test wurde hinzugefügt! Lassen Sie uns dies auch als Container ausführen.
kaz@Kaz-MBP qiita % docker run --rm -it test
(base) root@ba61e23ba183:/#
(base) root@ba61e23ba183:/# ipython
Python 3.7.6 (default, Jan 8 2020, 19:59:22)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.18.1 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import numpy, pandas
In [2]: exit
(base) root@ba61e23ba183:/#
(base) root@ba61e23ba183:/# ls /usr/workspace/
helloworld.py
(base) root@ba61e23ba183:/#
(base) root@ba61e23ba183:/# python /usr/workspace/helloworld.py
Hello, world!
(base) root@ba61e23ba183:/#
(base) root@ba61e23ba183:/#
(base) root@ba61e23ba183:/# exit
exit
kaz@Kaz-MBP qiita %
Ich konnte IPython ausführen und sowohl Numpy als auch Pandas importieren. / usr / workspace / helloworld.py
ist auch korrekt im Docker-Image enthalten.
Sie können es mit dem Befehl docker save
speichern. Übrigens scheint Speichern verwendet zu werden, um das Docker-Image zu speichern, und Exportieren, um den Docker-Container zu speichern.
Docker speichern → Export laden → Importieren Welche? --Qiita
kaz@Kaz-MBP qiita % docker save test > saved_img.tar
kaz@Kaz-MBP qiita %
kaz@Kaz-MBP qiita % ls
Dockerfile helloworld.py saved_img.tar
kaz@Kaz-MBP qiita %
Es wird von Docker Save als TAR-Datei exportiert. Diese TAR-Datei kann mit Docker Load -i saved_img.tar
geladen werden.
Laden Sie schließlich die gespeicherte Datei save_img.tar, nachdem das vorhandene Docker-Image "test" entfernt wurde, um festzustellen, ob der Container ordnungsgemäß funktioniert.
kaz@Kaz-MBP qiita % docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test latest bf07bc8332af 24 minutes ago 2.46GB
continuumio/miniconda3 latest b4adc22212f1 6 months ago 429MB
kaz@Kaz-MBP qiita %
kaz@Kaz-MBP qiita % docker rmi test
Untagged: test:latest
Deleted: sha256:bf07bc8332af060f8711f1610d331c1b5e28555942f1d78b57d8522c04206645
Deleted: sha256:375aa2957526e2da07a6057f47463dfc1568f4eb486df466ecf152c88e1069c4
Deleted: sha256:6b9931871d407a8f3506e64a8e2487a1ef418190308c34cc1d16ea4b97ea310b
Deleted: sha256:33afa4a779be5b75042a62c62563d16940f9d8c71a754317f33d74220f275f4c
Deleted: sha256:1b4aaad5eec1c08bf8b7dd8a3023fdd856c33b835467281d058694e3874d4d9c
Deleted: sha256:77a6450e1f92f5757655aafa4b74ea2c413b7a93b7fbcf1c15741bd3f9c0669e
kaz@Kaz-MBP qiita %
kaz@Kaz-MBP qiita % docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
continuumio/miniconda3 latest b4adc22212f1 6 months ago 429MB
kaz@Kaz-MBP qiita %
kaz@Kaz-MBP qiita % docker load -i saved_img.tar
7ee81e12667e: Loading layer 2.07GB/2.07GB
8f3d70528b79: Loading layer 2.56kB/2.56kB
771c1ba5862d: Loading layer 3.072kB/3.072kB
Loaded image: test:latest
kaz@Kaz-MBP qiita %
kaz@Kaz-MBP qiita %
kaz@Kaz-MBP qiita % docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test latest bf07bc8332af 28 minutes ago 2.46GB
continuumio/miniconda3 latest b4adc22212f1 6 months ago 429MB
kaz@Kaz-MBP qiita %
kaz@Kaz-MBP qiita % docker run --rm -it test
(base) root@d4a072d6c4bd:/#
(base) root@d4a072d6c4bd:/# ipython
Python 3.7.6 (default, Jan 8 2020, 19:59:22)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.18.1 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import numpy, pandas
In [2]: exit
(base) root@d4a072d6c4bd:/#
(base) root@d4a072d6c4bd:/# python /usr/workspace/helloworld.py
Hello, world!
(base) root@d4a072d6c4bd:/#
(base) root@d4a072d6c4bd:/# exit
exit
kaz@Kaz-MBP qiita %
Das Bibliotheksskript war auch nach dem Laden der .tar-Datei verfügbar! Das möchten Sie tun.
Recommended Posts