Je souhaite travailler dans un conteneur sur un serveur distant. Mais ça ne marche pas.
Environnement:
Local: Windows 10
Terminal local pour ssh: WSL dans Windows 10
Serveur: Ubuntu 18.04
J'ai vérifié ces deux articles.
https://code.visualstudio.com/docs/remote/containers-advancedhttps://code.visualstudio.com/docs/containers/ssh
J'ai suivi ces étapes.
Si vous pouvez atteindre le nœud distant exécutant le moteur Docker via SSH, pourquoi avez-vous besoin d'un autre serveur SSH à l'intérieur du conteneur? À partir de l'hôte exécutant votre conteneur, il est possible et sûr d'utiliser tty, c'est-à-dire attach.
Je ne pense pas que ce ne soit pas une bonne idée d'utiliser SSHD à l'intérieur du conteneur bien que cela soit possible. Pour être utile, SSHD doit écouter le port non conflictuel dans chaque conteneur. Sinon, 2 conteneurs exposant occasionnellement le même port sur le même nœud entreront en conflit comme tout autre service fonctionnant sur le même nœud.
Bien sûr, les ports peuvent être randomisés en utilisant l'option -P mais ce n'est pas si pratique. Il est également moins pratique de gérer les clés et les utilisateurs au niveau du conteneur qu'au niveau de l'hôte où toutes les machines sont fournies par le logiciel hôte.
Le chargement de chaque conteneur avec SSHD augmente la taille du conteneur. Dans Kubernetes, chaque conteneur est accessible sans aucun SSHD s'exécutant à l'intérieur des conteneurs via le passage Pod-> Container car Pod, a IP et les conteneurs sont attachables par id, c'est-à-dire "Docker-Host-> container"
En suivant les étapes ci-dessus ( https://stackoverflow.com/a/61728799/11687201 ) j'ai compris comment utiliser l'extension SSH Remote and Remote Explorer. La première étape est la même que ci-dessus:
"docker.Host": "tcp://localhost:23750"
LocalForward localhost:23750 /var/run/docker.sock
Remarque: Auparavant, j'utilisais la solution décrite plus haut dans ce fil ( https://stackoverflow.com/a/61728799/11687201 ). J'ai dû redémarrer les deux machines, la machine locale et la machine distante avant que la solution décrite ci-dessous ne fonctionne.
Ensuite, je dois utiliser plusieurs fenêtres VSCode:
Machine locale: démarrez VSCode et utilisez "Remote Explorer" pour vous connecter à la machine distante à l'aide d'une nouvelle fenêtre VSCode
Fenêtre VSCode connectée à la télécommande (SSH)
→ démarrer le conteneur Docker de votre choix
(Je n'ai pas pu "Joindre Visual Studio Code" à partir de cette fenêtre VSCode)
Fenêtre VSCode connectée à la machine locale
→ Cliquez sur l'extension "Docker", les conteneurs docker fonctionnant sur la télécommande sont listés. Attachez VSCode à un conteneur en cours d'exécution à l'aide de l'une des options suivantes:
Une troisième fenêtre VSCode s'ouvrira en étant attachée au conteneur Docker.
(+) En utilisant l'extension "Remote Explorer", je peux directement me connecter et ouvrir un dossier de projet précédemment utilisé sur ma machine distante en un seul clic
(-) 3 fenêtres VSCode (machine locale, ssh distante et conteneur distant) sont nécessaires au lieu de 2 fenêtres VSCode