web-dev-qa-db-fra.com

VS Code: connectez un conteneur docker dans un serveur distant

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.

  1. J'ai installé l'extension [Développement à distance] dans VS Code.
  2. Remote-SSH: connectez-vous à l'hôte. Ça fonctionne bien.
  3. J'ai installé l'extension [Docker] sur le serveur distant.
  4. Je peux maintenant voir mes conteneurs et mes images dans un onglet Docker.
  5. J'ai cliqué sur un conteneur et cliqué sur [Joindre Visual Studio Code] et cela indique qu'il n'y a pas de conteneurs en cours d'exécution à attacher.

entrez la description de l'image ici

5
Hakjin Lee

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"

0
Pavel Sosin

Solution utilisant le "Remote SSH" et l'extension "Remote Explorer" dans Visual Studio Code.

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:

  1. Ouvrez le fichier settings.json dans VSCode, appuyez sur F1 et sélectionnez "> Préférences: Ouvrir les paramètres (JSON)" et ajoutez/modifiez la ligne suivante:
    "docker.Host": "tcp://localhost:23750"
  2. Ouvrez le fichier de configuration ssh, cliquez sur l'extension "Explorateur distant", puis cliquez sur le bouton "Configurer" "Cibles SSH" et ouvrez le fichier de configuration ssh. Ajoutez la ligne suivante à votre connexion ssh:
    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:

  1. Machine locale: démarrez VSCode et utilisez "Remote Explorer" pour vous connecter à la machine distante à l'aide d'une nouvelle fenêtre VSCode

  2. 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)

  3. 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:

    • Cliquez avec le bouton droit sur le conteneur souhaité et choisissez "Joindre Visual Studio Code"
    • Appuyez sur F1 et choisissez "> Remote-Containers: Attach to Running Container ..." et sélectionnez ensuite le conteneur de votre choix

    Une troisième fenêtre VSCode s'ouvrira en étant attachée au conteneur Docker.

Avantages et inconvénients de cette solution

(+) 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

0
ai2ys