mappage de port ssh - accédez à jupyter dans le conteneur Docker mappé localement de l'hôte cible

arrière-plan:

Mon ordinateur est l'hôte local et l'ordinateur de mon collègue (3080TI) est l'hôte cible. Il existe des conteneurs dans le système. Je dois me connecter au conteneur de l'hôte cible et j'ai besoin d'une interface graphique ou d'un répertoire de dossiers. Seule l'utilisation de vscode ou du client SFTP ne peut pas voir les fichiers et l'interface graphique dans le conteneur, nous avons donc exploré l'utilisation de jupyter pour accéder aux dossiers du conteneur.

Mais maintenant, la méthode VNC a été utilisée pour accéder au bureau du conteneur, et cet article ne concerne que les enregistrements.

(1 message) vnc se connecte au bureau du conteneur docker sur le serveur distant


Mapper localement sur l'hôte cible

Créez un nouveau powershell, exécutez le code suivant, ouvrez le terminal et mappez le port 8888 de la machine locale au port 8888 de l'hôte distant, en utilisant le paramètre -L de la commande ssh à réaliser.

 ssh -L 8888:127.0.0.1:8888 [email protected]

 Voici le format ssh. Parmi eux, l'adresse locale est généralement la machine locale, qui peut être ignorée directement, et la valeur par défaut est localhost. Le mappage entre deux hôtes doit renseigner l'adresse de l'hôte cible, qui est 127.0.0.1.

ssh -L 本地地址:本地端口:目标地址:目标端口 用户名@跳板机地址

Vérifiez l'état d'exécution du conteneur, activez le conteneur, entrez le conteneur à partir de n'importe quel terminal.

# 查看当前所有容器:已运行、未运行的
docker container ls -a
# 若容器时up状态,则直接exec进入容器,忽略第一行。
docker start ybd
docker exec -it ybd bash

Vérifiez si le conteneur a activé le service ssh. Si le conteneur est à l'état actif à l'étape précédente et que l'état ssh est activé, il n'est pas nécessaire d'exécuter en plus la commande pour démarrer le service ssh.

service ssh start # 启动ssh服务
ps -e | grep ssh #查看ssh服务是否启动

 Exécutez le code suivant dans le terminal ouvert à la première étape (pour terminer le mappage de port) pour utiliser ssh pour vous connecter au conteneur et transférer le conteneur vers l'hôte cible. Puisqu'il est transmis par la machine locale (hôte cible) et que l'adresse cible est cohérente avec la machine tremplin, l'adresse cible est directement remplie avec localhost.

# 下面两句含义相同,本机转发,本机地址为127.0.0.1
ssh -L 8888:127.0.0.1:8888 [email protected] -p 8080
ssh -L 8888:localhost:8888 [email protected] -p 8080

Après vous être connecté au conteneur, générez d'abord le fichier de configuration.

$jupyter notebook --generate-config

Un mot de passe doit être généré pour la première connexion. Reportez-vous à Remote access to jupyter notebook - Echo/ - Blog Garden (cnblogs.com) . Après avoir généré un mot de passe en fonction de l'opération, vous devez ouvrir ~/.jupyter/jupyter_notebook_config. py pour la configuration :

vim ~/.jupyter/jupyter_notebook_config.py

 Ajoutez du contenu. Remarque pour remplacer 'sha1:854d1...' par la clé générée à l'étape précédente.

c.NotebookApp.ip='*'
c.NotebookApp.password = u'sha1:854d183417ac:db1e783bde7bbab704d009c996e93dc2d3e31c25'
c.NotebookApp.open_browser = False
c.NotebookApp.port =8888

Après avoir configuré le fichier de configuration jupyter, exécutez jupyter :

jupyter notebook --allow-root

Les résultats suivants apparaissent :

 Ouvrez un navigateur et entrez localhost:8888 pour accéder au conteneur docker mappé à l'hôte cible mappé à l'hôte local.

Il y a aussi un problème, peut-être que le chemin par défaut de jupyter n'est pas le chemin où le conteneur est monté sur l'hôte cible, vous devez donc ouvrir à nouveau jupyter_notebook_config.py pour modifier le chemin par défaut.

vim ~/.jupyter/jupyter_notebook_config.py

Appuyez sur "/" pour trouver : "c.NotebookApp.notebook_dir":

La valeur par défaut est :  

# c.NotebookApp.notebook_dir = ''

Modifiez au besoin pour :

c.NotebookApp.notebook_dir = '/'

Le chemin par défaut a été modifié avec succès !


 enfin! Très important!

Chaque fois que vous quittez jupyter, vous devez quitter selon la procédure normale, sinon le port restera ouvert, et la prochaine fois que le conteneur sera mappé, vous ne pourrez pas accéder à 8888, qui sera reporté à 8889, entraînant le impossible de se connecter normalement !

S'il se ferme de manière inattendue, le moyen le plus efficace est de redémarrer le conteneur ! ! !

référence:

Docker : Comment utiliser jupyter notebook avec élégance dans Docker (outil pointu) - Blog de Felaim - Blog CSDN

Le transfert de port SSH réalise la connexion à distance de Jupyter Notebook server_ID_AF12's Blog-CSDN Blog_jupyter notebook port forwarding

Je suppose que tu aimes

Origine blog.csdn.net/weixin_41467446/article/details/125216873
conseillé
Classement