[Introduction à Docker] ~ Explication la plus courte jusqu'au démarrage de jupyter lab ~

introduction

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!

supposition

・ Nous réalisons dans un environnement Mac

table des matières

  1. Vue d'ensemble des travaux de construction d'environnement
  2. installation du docker
  3. Créez Dockerfile
  4. création d'image
  5. création de conteneurs
  6. Supprimer l'environnement

1. Vue d'ensemble des travaux de construction d'environnement

Le flux de base de la construction d'environnement avec Docker est le suivant

  1. Création d'un Dockerfile
  2. Créer une image
  3. Créer et démarrer le conteneur

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)
-

image.png Diagramme schématique (https://docs.docker.jp/engine/understanding-docker.html)

2. installation du docker

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/ スクリーンショット 2020-11-22 21.09.33.png

3. Création d'un Dockerfile

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)

4. création d'image

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

5. création de conteneurs

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 image.png

écran jupyter-lab image.png

À 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é) image.png 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

6. Supprimer l'environnement

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

enfin

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!

référence

・ 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

[Introduction à Docker] ~ Explication la plus courte jusqu'au démarrage de jupyter lab ~
[GCP] Jusqu'à ce que vous transmettiez l'image Docker locale à Container Registry
Introduction à Linux Container / Docker (Partie 1)
Introduction à Linux Container / Docker (Partie 2)
Introduction au développement du mod Slay the Spire (1) Introduction
Examinez le remplacement de Docker vers Podman.
Introduction à Java pour la première fois # 2
Introduction à Ratpack (3) - Explication détaillée de Hello World
Sortie du livre "Introduction à Java"
Introduction au développement pratique de conteneurs Docker / Kubernetes
[Docker] Construisez l'environnement d'exécution de Jupyter Lab avec Docker
Explication jusqu'à ce que la demande originale soit terminée
[Introduction à Docker] Tutoriel officiel (traduction en japonais)
[Introduction à Docker] Créer une image Docker pour l'apprentissage automatique et utiliser le notebook Jupyter