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é.
L'explication sur l'introduction et la configuration du code VS et des extensions est omise.
Il est décrit sous le titre «Développement à l'intérieur d'un conteneur sur un hôte Docker distant».
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.
Remote-Containers: Forward Port from Container ...
.Forward XXXX
(XXXX est le numéro de port commencé dans le conteneur)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.
à
devcontainer.json` et spécifiez le port.Remote-Containers: Rebuild Container
. Reconstruisez le conteneur.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
.
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