Je suis Ishikawa de NTT Docomo. C'est ma deuxième année en tant que membre de la société.
Récemment, pour diverses raisons, le nombre d'entreprises et d'écoles qui recommandent le travail à domicile et la recherche à domicile a augmenté.
Dans de telles circonstances, le nombre de personnes qui travaillent à domicile a considérablement augmenté, et à ce moment-là, si je me concentrais sur la création d'un environnement pour le développement à distance, je pourrais me sentir plutôt bien, alors veuillez vous y référer.
Vous pourrez travailler à l'intérieur du conteneur Docker sur le serveur distant comme si vous travailliez localement.
En tant que prémisse de cette construction d'environnement
ça ira.
Il existe également une méthode utilisant Docker Desktop, mais je l'ai trouvée un peu gênante, donc cette fois je vais vous présenter une méthode qui ne l'utilise pas.
Vous pourrez effectuer les opérations suivantes dans le conteneur Docker configuré sur le serveur distant uniquement sur l'écran VS Code du PC local.
--Maintenance de l'environnement d'exécution --Modifier le fichier programme --Exécuter de programme
En plus de cela, vous pouvez modifier et transférer des fichiers dans le conteneur à l'aide de Cyberduck et calculer à l'aide du GPU.
Ensuite, comment créer un environnement immédiatement.
Commençons par établir une connexion SSH sur le serveur distant.
Ici, nous utiliserons la connexion par authentification par clé RSA. (* La méthode de paramétrage de l'authentification par clé RSA est générale et correcte, elle est donc omise ici)
Après vous être connecté au serveur distant avec une connexion SSH, créez le fichier docker suivant à n'importe quel emplacement sur le serveur distant. Le nom du fichier est "dockerfile".
#Image de la base. Les éléments suivants sont adaptés à mon environnement GPU, veuillez donc choisir celui qui vous convient.
#Pour ceux qui n'utilisent pas de GPU"ubuntu:18.04"Etc. va bien.
FROM nvidia/cuda:10.1-cudnn7-runtime-ubuntu18.04
#Le nom de la personne qui l'a fait.
LABEL maintainer "dcm_ishikawa"
#Importez les éléments minimum requis et les éléments requis pour la connexion SSH.
RUN apt-get update --fix-missing && \
apt-get install -y apt-utils && \
apt-get install -y software-properties-common vim curl unzip htop openssh-server wget procps
#Paramètres de connexion SSH.
# "password"Veuillez remplacer le lieu par un mot de passe.
#Ubuntu 18 est défini de différentes manières.C'est un travail de faire une connexion SSH en tant qu'utilisateur root en 04.
RUN mkdir /var/run/sshd
RUN echo 'root:password' | chpasswd
RUN echo '\nPermitRootLogin yes' >> /etc/ssh/sshd_config
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
#Paramètres GPU. Non requis si vous n'utilisez pas de GPU.
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES utility,compute
#Paramètres de connexion SSH.
ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile
#Vous permet de démarrer une connexion SSH lorsque vous exécutez.
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
Après avoir créé le dockerfile, exécutez la commande suivante dans le même emplacement où vous avez enregistré le dockerfile
.
docker image build . -t [imagename]
docker run --name [containername] -d -p 10000:22 -p 18888:8888 [imagename]
docker
en nvidia-docker
.«[imagename]» est n'importe quel nom d'image et «[containername]» est n'importe quel nom de conteneur.
Pour -p 10000: 22
, 10000 est un numéro de port arbitraire lors du passage du port au serveur distant.
Pour -p 18888: 8888
, 18888 est le numéro de port lors de l'accès avec Jupyter Notebook sur le navigateur. Non requis lorsque vous n'utilisez pas Jupyter Notebook ou lorsque vous utilisez Juoyter Notebook sur VS Code.
Si vous tapez la commande suivante sur le serveur distant et la placez dans le conteneur, la création du conteneur est réussie.
ssh [email protected] -p 10000
Un mot de passe vous sera demandé lors de la connexion, mais le mot de passe sera celui décrit dans le dockerfile
.
Une fois connecté, créez ~ / .ssh / allowed_keys
dans le conteneur et entrez la clé publique créée sur votre PC local.
Une fois que cela est fait, utilisez ʻexit` pour déconnecter la connexion SSH au conteneur.
De plus, créez ~ / .ssh / authorized_keys
sur le serveur distant et entrez la clé publique créée sur le PC local.
Ceci termine le travail sur le serveur distant. Déconnectons également la connexion SSH au serveur distant.
Ensuite, c'est le réglage du PC local.
Ajoutez la description suivante sur le serveur distant et SSH au conteneur sur le serveur distant dans ~ / .ssh / config
sur le PC local. (Créez ce fichier s'il n'existe pas en premier lieu)
~/.ssh/config
Host Server01 #Tout nom de connexion
HostName xxx.xxx.xxx.xxx #Adresse du serveur distant
User username #Nom d'utilisateur sur le serveur distant
IdentityFile ~/.ssh/id_rsa #Le chemin de la clé privée créée
Host Server01:Container #Tout nom de connexion
HostName 127.0.0.1
User root
IdentityFile ~/.ssh/id_rsa #Comme ci-dessus
Port 10000 #Numéro de port transmis lors de l'exécution du conteneur
ProxyCommand ssh -W %h:%p Server01 #Server01 est le même que celui de la première ligne
Ensuite, installez l'extension pour la connexion SSH de VS Code à partir de l'URL suivante.
https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh-explorer
Démarrez VSCode et appuyez sur le bouton de connexion à distance sur la gauche.
Le nom de connexion du conteneur spécifié dans ~ / .ssh / config
apparaîtra dans la liste. (Ici Server01: Container
)
Cliquez sur la marque de dossier à droite du nom de la connexion pour terminer la connexion VS Code au conteneur.
Sur l'écran qui apparaît, il y a un bouton qui dit "Ouvrir le dossier". En appuyant dessus, vous pouvez sélectionner n'importe quel emplacement dans le conteneur, donc sélectionnez l'emplacement que vous souhaitez ajouter à l'espace de travail.
Je vous remercie pour votre travail acharné. Ceci termine la construction de l'environnement. Voici comment l'utiliser. Se il vous plaît se référer.
Vous pouvez ouvrir la ligne de commande sur le conteneur en cliquant sur les boutons dans l'ordre des images.
Utilisez wget depuis la ligne de commande du conteneur pour télécharger et installer des programmes d'installation tels que Anaconda et Miniconda.
(Exemple)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
rm Miniconda3-latest-Linux-x86_64.sh
source ~/.bashrc
Tout d'abord, installez l'extension Python dans l'espace de travail du conteneur. ** (* Dans certains cas, il n'est pas installé par défaut!) ** Installation: https://marketplace.visualstudio.com/items?itemName=ms-python.python
Ensuite, installez Jupyter à partir de la ligne de commande à l'intérieur du conteneur.
pip install jupyter
Tapez la commande pour démarrer Jupyter.
Ouvrez la palette de commandes avec command
+ shift
+ P
et
Entrez > Create New Blank Jupyter Notebook
et appuyez sur ʻEnter`.
Avec une mise à jour récente, c'est tout ce dont vous avez besoin pour commencer. C'est incroyable.
Exécutez la commande suivante sur la ligne de commande dans le conteneur.
jupyter notebook --port 8888 --ip=0.0.0.0 --allow-root
** Notez qu'il y a certaines choses qui ne peuvent pas être faites avec la commande jupyter notebook
seule. ** **
Je pense qu'il est pratique de le définir avec un alias.
Ce qui suit sera renvoyé à la ligne de commande, donc copiez la partie xxxxxxxxxxxxxxx
.
http://127.0.0.1:8000/?token=xxxxxxxxxxxxxxx
Ouvrez votre navigateur local et accédez à la barre d'adresse
Entrez «[Adresse IP du serveur distant]: 18888» et appuyez sur «Entrée». («18888» est le numéro de port spécifié lors de l'exécution du docker.)
Après cela, il vous sera demandé un mot de passe ou un jeton, alors entrez le xxxxxxxxxxxxxxx
que vous avez copié précédemment et vous pourrez utiliser Jupyter Notebook dans votre navigateur.
Vous pourrez vous connecter à partir de «Nouvelle connexion» avec les paramètres suivants.
--Sélectionnez SFTP --Server: adresse du serveur distant --Port: Le numéro de port spécifié pendant l'exécution (10000 ici) --Nom d'utilisateur: root
Si votre connexion SSH de code VS ou de ligne de commande ne fonctionne pas, il est probable que vous ayez reconstruit le conteneur plusieurs fois et que vous ayez un conflit avec known_hosts
.
Il peut être résolu en supprimant la description appropriée dans ~ / .ssh / known_hosts
sur le PC local, ou en la renommant en ~ / .ssh / known_hosts.old
.
Qu'as-tu pensé. J'espère que cet article vous aidera dans votre travail à domicile et dans vos recherches. Continuons à travailler ensemble et faisons de notre mieux!
Recommended Posts