[DOCKER] Comment développer des conteneurs sur des serveurs distants avec VS Code Remote-Containers

Aperçu

environnement

Contexte

J'ai rencontré un bogue dans Docker Desktop pour Mac en essayant de configurer un environnement de développement pour VS Code + Remote-Containers sur un Mac.

--Docker ne démarre pas sur Docker Desktop pour la version stable Mac (2.1.0.5) sur macOS Catalina --Docker démarre dans la version Edge (2.1.7.0), mais le processus de com.docker.hyperkit reste avec 100% du processeur (les fans font un rugissement)

En regardant le problème sur GitHub, Docker ne démarre pas et le bogue d'emballement du processus se poursuit depuis longtemps, et aucune amélioration ne peut être attendue à l'avenir.

En outre, la documentation VS Code décrit également un bogue d'emballement de processus.

Après quelques essais et erreurs, j'ai décidé d'arrêter d'exécuter Docker sur Mac, d'exécuter Docker sur un serveur Linux et de rechercher un environnement pour me connecter à distance. Cependant, le paramètre par défaut de Remote-Containers démarre le conteneur dans l'environnement Docker local, j'ai donc cherché un moyen de me connecter au serveur distant et je l'ai réalisé.

Comment se connecter à un serveur distant avec Remote-Containers

L'explication sur l'introduction et la configuration du code VS et des extensions est omise.

Document cible

Il est décrit sous le titre «Développement à l'intérieur d'un conteneur sur un hôte Docker distant».

Méthode de réglage

C'est facile à configurer, ajoutez simplement la ligne docker.host à setting.json et redémarrez VS Code.

** Exemple de configuration de setting.json **

    "docker.host": "ssh://[email protected]"

Étant donné que l'authentification par clé est requise pour la connexion SSH au serveur distant, définissez-la.

Cliquez ici pour consulter la documentation des paramètres SSH dans VS Code.

Une fois les clés prêtes sur le serveur et le client, configurez les paramètres VS Code.

In VS Code, run Remote-SSH: Open Configuration File... in the Command Palette (F1), select the SSH config file you wish to change, and add (or modify) a host entry in the config file as follows to point to the file:

En fait, il s'agit d'un paramètre de configuration SSH, il semble donc qu'il n'y ait pas de problème même si vous le modifiez directement. Spécifiez l'emplacement de la clé en ajoutant la ligne ʻIdentity File`.

** Exemple de configuration ~ / .ssh / config **

Host 192.168.1.60
  HostName 192.168.1.60
  User root
  IdentityFile ~/.ssh/id_rsa

Vous pouvez maintenant vous connecter directement au conteneur sur le serveur distant avec Remote-Containers. Il semble y avoir une méthode utilisant le protocole TCP autre que le protocole SSH, mais elle n'a pas été vérifiée.

Forward Port Immédiatement après le démarrage de Remote-Containers, le terminal local et le conteneur sur le serveur distant sont isolés, il n'est donc pas possible de se connecter directement au port à l'intérieur du conteneur. Par conséquent, ajoutez le port de transfert pour transférer le port du terminal local vers le port du conteneur.

Document cible

procédure

  1. Démarrez le serveur que vous souhaitez tester dans le conteneur et vérifiez que le port écoute.
  2. Sélectionnez F1 → Remote-Containers: Forward Port from Container ....
  3. Sélectionnez Forward XXXX (XXXX est le numéro de port commencé dans le conteneur)
  4. Connectez-vous à http: // localhost: XXXX avec le navigateur du terminal local ou la commande curl (si vous spécifiez localhost dans Safari sur Mac, une erreur se produira, vous pouvez donc vous connecter en le remplaçant par 127.0.0.1)

Publish Port S'il est difficile de définir le port de transfert à chaque démarrage du conteneur, définissez le port de publication et définissez le port pour qu'il soit toujours transféré au démarrage du conteneur.

Document cible

procédure

  1. Ajoutez le paramètre ʻaddPort à devcontainer.json` et spécifiez le port.
  2. Sélectionnez F1 → Remote-Containers: Rebuild Container. Reconstruisez le conteneur.
  3. Démarrez le serveur que vous souhaitez tester dans le conteneur et vérifiez que le port écoute.
  4. Connectez-vous à http: // IP du serveur distant ou FQDN: XXXX avec le navigateur du terminal local ou la commande curl

** Exemple de paramétrage devcontainer.json (docker: 9000, container: 5000) **

	"appPort": ["9000:5000"],

Lorsque docker ps est exécuté dans l'exemple ci-dessus, le PORTS de l'ID de conteneur cible devient 0.0.0.0:9000-> 5000 / tcp.

Résumé

Nous avons pu créer un environnement de développement de conteneurs transparent avec VS Code. Il vous suffit de préparer VS Code sur votre terminal local et vous n'avez même pas besoin d'un Docker. C'est une condition que le serveur distant soit démarré et qu'une connexion réseau soit toujours requise, mais je pense qu'un environnement de développement sans stress a été construit dans la mesure où il y a suffisamment de changements. Veuillez vous référer au développement de conteneurs à l'aide de Remote-Containers.

Recommended Posts

Comment développer des conteneurs sur des serveurs distants avec VS Code Remote-Containers
Bénéficiez de l'environnement le plus puissant avec VS Code, Remote-Containers et Remote Docker-Daemon
Comment créer un environnement d'exécution Python et Jupyter avec VSCode
Procédure de création d'un environnement virtuel Python avec VS Code sous Windows
Comment utiliser VS Code (serveur de code) avec Google Colab en seulement 3 lignes
Stratégie sur la façon de monétiser avec Python Java
Comment développer une application de panier avec Django
Comment installer OpenGM sur OSX avec macports
Procédure d'attachement et de débogage de VS Code vers Jupyter Lab sur un serveur distant
Comment créer un package Python à l'aide de VS Code
Autoencoder dans Chainer (Remarques sur l'utilisation de + trainer)
[Django] Créez rapidement un environnement de développement de conteneur Django (Docker) à l'aide de VS Code + Remote Containers
Déboguer à distance l'environnement Django créé avec docker-compose avec VS Code
Remarques sur la façon d'utiliser Firefox avec du sélénium sous Windows
[Venv non requis] L'environnement de développement Python le plus puissant créé avec des conteneurs distants [VS Code / Docker]
Comment installer Python2.7 python3.5 avec pyenv (sur RHEL5 CentOS5) (novembre 2016)
Essayez Fortran avec VS Code pour déboguer les paramètres. [Win10]
Créez un environnement de développement Go avec les conteneurs distants de VS Code
[Ev3dev] Comment afficher une image bmp sur un écran LCD avec python
Paramètres pour entrer et déboguer le contenu de la bibliothèque avec VS Code
Comment installer Theano sur Mac OS X avec homebrew
Python avec VSCode (Windows 10)
Comment s'inscrire auprès de pypi
Comment mettre à jour avec SQLAlchemy?
Déboguer Python avec VS Code
Comment lancer avec Theano
Comment modifier avec SQLAlchemy?
Comment séparer les chaînes avec ','
Comment faire RDP sur Fedora31
Comment développer en Python
Comment supprimer avec SQLAlchemy?
Comment écrire du code pour accéder à python dashDB sur Bluemix ou local
Comment personnaliser U-Boot avec une carte personnalisée pour OSD335X (Remarque)
Comment exécuter Jupyter et Spark sur Mac avec des paramètres minimaux
Pour utiliser python, mettez pyenv sur macOS avec PyCall
Comment résoudre les problèmes de planification linéaire avec PuLP
Comment se connecter à Cloud Firestore à partir de Google Cloud Functions avec du code Python
Comment obtenir tout le trafic via VPN avec OpenVPN sous Linux
Modifier les fichiers directement sur Linux avec Remote SSH dans Visual Studio Code
Comment déboguer un programme Python en se connectant à distance à un conteneur Docker dans un environnement WSL2 avec VS Code
Comment exécuter le code pratique du livre "Making Profitable AI with Python" sur Google Colaboratory
Étapes pour développer Django avec VSCode
Python: comment utiliser async avec
Comment installer mysql-connector-python sur Mac
Remarques sur l'utilisation de pywinauto
Pour utiliser virtualenv avec PowerShell
Comment installer python-pip avec ubuntu20.04LTS
Comment installer Graph-Tool sur macOS
Comment gérer les données déséquilibrées
Comment installer VMware-Tools sur Linux
Comment installer pycrypto sur Windows
Comment déployer django-compresseur sous Windows
Remarques sur l'utilisation des featuretools
Comment installer OpenCV sur Mac
Comment exécuter matplotlib sur heroku
Comment installer PyPy sur CentOS
Comment démarrer avec Scrapy
Comment démarrer avec Python
Comment utiliser l'homebrew dans Debian