Cet article vise à aider les débutants de docker à accéder le plus rapidement possible au laboratoire Jupyter. Les discussions approfondies sur les termes techniques de docker tels que le conteneur et l'image sont ignorées, veuillez donc rechercher la partie qui vous intéresse sur Google.
Si vous lisez l'article et que vous l'avez trouvé utile, je vous serais reconnaissant de bien vouloir appuyer sur LGTM!
・ Nous réalisons dans un environnement Mac
Le flux de base de la construction d'environnement avec Docker est le suivant
Pour expliquer chacun en un mot
le terme | Commentaire | URL de référence |
---|---|---|
Dockerfile | Document de conception de l'environnement à construire (Vous pouvez voir en un coup d'œil de quel type d'environnement il s'agit en regardant ce fichier) |
- |
image | Dupliquer le fichier d'environnement avec les informations d'environnement (Vous pouvez créer plusieurs environnements avec une seule image) |
Tutoriel visant à comprendre les images Docker |
container | Instance d'environnement générée à partir de l'image (Vous pouvez configurer ou écraser l'environnement avec des essais et des erreurs) |
- |
Diagramme schématique (https://docs.docker.jp/engine/understanding-docker.html)
Inscrivez-vous avec Docker Hub et téléchargez la version de bureau à partir de «Premiers pas avec Docker Desktop» sur la page supérieure. https://hub.docker.com/
Créez un répertoire Docker sur le bureau et créez-y le Dockerfile suivant
Desktop/docker/Dockerfile
#Tirez l'image d'anaconda3 du hub docker (https)://hub.docker.com/r/continuumio/anaconda3)
#Cette image est l'environnement dans lequel anaconda3 est installé sur ubuntuOS.
FROM continuumio/anaconda3:2020.07
#Apportez des modifications au fichier de configuration de jupyter (sinon jupyter-le laboratoire ne démarre pas)
RUN jupyter notebook --generate-config
WORKDIR /root/.jupyter
RUN echo 'c.NotebookApp.allow_root = True' >> jupyter_notebook_config.py && \
echo 'c.NotebookApp.ip = "0.0.0.0"' >> jupyter_notebook_config.py && \
echo 'c.NotebookApp.token = "xxxx"' >> jupyter_notebook_config.py && \
echo 'c.NotebookApp.port = 8888' >> jupyter_notebook_config.py && \
echo 'c.NotebookApp.open_browser = False' >> jupyter_notebook_config.py
#Reportez-vous à l'URL suivante pour les paramètres de sécurité
#https://jupyter-notebook.readthedocs.io/en/latest/security.html#server-security
#https://qiita.com/SaitoTsutomu/items/aee41edf1a990cad5be6
#Créer un répertoire de travail
RUN mkdir -p /home/work
WORKDIR /home/work
#Définir la commande par défaut (commande exécutée au démarrage du conteneur)
CMD [ "jupyter", "lab"]
** Liste d'instructions Dockerfile **
ordre | Commentaire |
---|---|
FROM | Extraire l'image du hub Docker (L'extraction n'est pas effectuée s'il existe une image correspondante en local) |
RUN | Exécuter la commande linux (Exécutez la commande dans l'environnement de l'image extraite pour personnaliser l'environnement) |
WORKDIR | Changer le répertoire courant (Notez que le déplacement est temporaire avec la commande linux cd.) |
CMD | Définir la commande par défaut (Commande exécutée au démarrage du conteneur) |
Il n'y a pas beaucoup de commandes, donc si vous êtes intéressé, veuillez vérifier les autres (http://docs.docker.jp/v17.06/engine/reference/builder.html)
Exécutez la commande comme suit pour créer et vérifier l'image
Créer une image
#Déplacer vers le répertoire contenant le Dockerfile
cd desktop/docker/Dockerfile
#Spécifiez le répertoire actuel et créez l'image(-Spécifiez le nom de l'image avec l'option t)
docker build . -t anaconda-env
Confirmation de l'image créée
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
anaconda-env latest 8aacbb4fe3dc 10 hours ago 2.76GB
S'il est affiché comme ci-dessus, la création de l'image est terminée
Enfin, la création du conteneur complète la création de l'environnement d'exécution jupyter-lab! Entrez les commandes suivantes dans l'ordre
#Créer un répertoire pour l'enregistrement du côté de l'hôte local
mkdir volume
#Créer un conteneur
docker run -v $(pwd)/volume:/home/work -p 1111:8888 --name anaconda-container -it anaconda-env
Explication de l'option
option | Commentaire |
---|---|
-v | -Spécifier la destination de sauvegarde de certains répertoires dans le conteneur localement -Dans la commande ci-dessus, conteneur:/home/L'enregistrement au travail est enregistré dans l'hôte: volume -Comme les données ne seront pas supprimées même si le conteneur est supprimé, le code source et les données d'entraînement seront gérés dans ce répertoire. ・ Parce qu'il est nécessaire de spécifier avec un chemin absolu$(pwd)Attribue le répertoire actuel en |
-p | Représente la connexion entre localhost et le port dans le conteneur (Dans le cas de la spécification ci-dessus, lors de la connexion au port 1111 de localhost, connectez-vous au port 8888 dans le conteneur) |
--name | Décidez du nom du conteneur à générer |
-it | la magie (-i:Accepte les entrées de la ligne de commande,-t:Une combinaison de ceux-ci qui nettoie l'affichage de la ligne de commande) |
Lorsque vous exécutez la commande ci-dessus, jupyter-lab démarre, veuillez donc accéder à l'URL suivante http://localhost:1111
Cette fois, le mot de passe est ** 'xxxx' ** dans le Dockerfile (si vous voulez connaître les détails sur la façon de définir le mot de passe, veuillez vous référer à l'URL suivante) https://jupyter-notebook.readthedocs.io/en/latest/security.html#server-security
Écran de connexion
écran jupyter-lab
À ce stade, docker a démarré jupyter-lab! Je vous remercie pour votre travail acharné!
À la fin de ce chapitre, vérifiez l'état du conteneur créé Revenez à l'écran Linux, et à partir de l'état où jupyter-lab s'exécute comme indiqué ci-dessous, utilisez ** "ctrl + p + q" ** pour quitter temporairement le conteneur. (Le conteneur ne sera pas arrêté) Vous pouvez voir que le conteneur est démarré avec la commande suivante
#Vérifiez l'état du conteneur
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
22093b0f68f1 anaconda-env "jupyter lab" 25 minutes ago Up 25 minutes 0.0.0.0:1111->8888/tcp anaconda-container
En passant, vous pouvez arrêter et exécuter le conteneur avec la commande suivante.
docker stop anaconda-container
#Arrêter le conteneur(Exited)confirmer(-Vous pouvez également vérifier le conteneur arrêté avec un)
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
22093b0f68f1 anaconda-env "jupyter lab" 37 minutes ago Exited (0) 26 seconds ago anaconda-container
Si vous souhaitez le redémarrer, exécutez la commande suivante
docker start anaconda-container
#juypter-Au démarrage du laboratoire
docker exec -it anaconda-container jupyter lab
#Lors de la connexion à la CUI de l'environnement(Si vous voulez faire l'installation de conda, etc.)
docker exec -it anaconda-container bash
Suivez les étapes ci-dessous pour supprimer le conteneur et l'image
#Le conteneur ne peut pas être supprimé sans s'arrêter
docker stop anaconda-container
#Supprimer le conteneur
docker rm anaconda-container
#Supprimer l'image
docker rmi anaconda-env
Lors de la création d'une image avec Dockerfile, chashe est laissé comme point de sauvegarde (chash est généré pour chaque commande RUN dans Dockerfile) chashe est enregistré afin que chas puisse être réutilisé jusqu'au point de sauvegarde même en cas d'erreur lors de la génération du Dockerfile. N'oubliez pas de supprimer ceci car chashe peut submerger la capacité à votre insu.
#Supprimer le cache
docker builder prune
J'ai parcouru toutes les étapes jusqu'à présent, mais je pense que j'ai pu créer un environnement de manière inattendue. ?? Une fois que vous êtes devenu un docker, vous pouvez automatiser la construction d'environnements problématiques avec Dockerfile, et vous pouvez facilement migrer vers d'autres PC / serveurs. Cela semble être la norme pour créer un environnement d'analyse de données / de développement d'IA et de développement Web, il ne devrait donc pas nuire à le maintenir. J'ai sauté de nombreuses explications détaillées, donc si vous souhaitez étudier de manière exhaustive, essayez d'apprendre avec du matériel de référence! (Surtout le cours udemy est recommandé!)
Si vous lisez l'article et que vous l'avez trouvé utile, je vous serais reconnaissant de bien vouloir appuyer sur LGTM!
・ Introduction à Docker https://datawokagaku.com/whatisdocker/ ・ Cours Udemy (recommandé pour ceux qui souhaitent étudier de manière approfondie) https://www.udemy.com/course/aidocker/
Recommended Posts