web-dev-qa-db-ja.com

VS Code:リモートサーバーのDockerコンテナーを接続する

リモートサーバーのコンテナで作業したい。しかし、それは機能しません。

環境:

ローカル:Windows 10

Sshのローカルターミナル:Windows 10のWSL

サーバー:Ubuntu 18.04

この二つの記事をチェックしました。

https://code.visualstudio.com/docs/remote/containers-advancedhttps://code.visualstudio.com/docs/containers/ssh

私はこれらのステップに従いました。

  1. VS Codeに[Remote Development]拡張機能をインストールしました。
  2. リモートSSH:ホストに接続します。正常に動作します。
  3. リモートサーバーに[Docker]拡張機能をインストールしました。
  4. これで、Dockerタブにコンテナーとイメージが表示されます。
  5. コンテナーを1つクリックして[Visual Studio Codeをアタッチ]をクリックすると、アタッチする実行中のコンテナーはありません。

ここに画像の説明を入力

5
Hakjin Lee

SSH経由でDockerエンジンを実行しているリモートノードに到達できる場合、コンテナー内にさらに別のSSHサーバーが必要なのはなぜですか?コンテナーを実行しているホストから、ttyを使用する、つまり接続することが可能で安全です。

これは可能ですが、コンテナ内で実行されているSSHDを使用するのは良い考えではないと思います。 SSHDが役立つようにするには、すべてのコンテナで競合しないポートをリッスンする必要があります。そうしないと、同じノードで同じポートを公開する2つのコンテナが、同じノードで実行されている他のサービスと同様に競合します。

もちろん、ポートは-Pオプションを使用してランダム化できますが、それほど便利ではありません。また、すべての機構がホストソフトウェアによって提供されるホストレベルよりも、コンテナーレベルでキーとユーザーを管理する方が便利です。

SSHDですべてのコンテナーをロードすると、コンテナーのサイズが大きくなります。 Kubernetesでは、PodにIPがあり、コンテナはIDで接続できるため、「Docker-Host-> container」などのパスPod-> Containerを介してコンテナ内でSSHDを実行しなくても、すべてのコンテナに到達できます。

0
Pavel Sosin

Visual Studio Codeの「リモートSSH」および「リモートエクスプローラー」拡張機能を使用するソリューション。

上記の手順に従って( https://stackoverflow.com/a/61728799/11687201 )私は、SSHリモートおよびリモートエクスプローラー拡張機能の使用方法を理解しました。最初のステップは上記と同じです:

  1. VSCodeでsettings.jsonファイルを開き、F1を押して、[設定]> [設定を開く(JSON)]を選択し、次の行を追加/編集します。
    "docker.Host": "tcp://localhost:23750"
  2. Ssh設定ファイルを開き、「リモートエクスプローラ」拡張機能をクリックしてから、「SSHターゲット」「設定」ボタンをクリックして、ssh設定ファイルを開きます。次の行をssh接続に追加します。
    LocalForward localhost:23750 /var/run/docker.sock

備考:以前は、このスレッドで以前に説明されたソリューションを使用しました( https://stackoverflow.com/a/61728799/11687201 )。以下で説明する解決策が機能する前に、ローカルマシンとリモートマシンの両方を再起動する必要がありました。

その後、複数のVSCodeウィンドウを使用する必要があります。

  1. ローカルマシン:VSCodeを起動し、「リモートエクスプローラー」を使用して、新しいVSCodeウィンドウを使用してリモートマシンに接続します。

  2. リモートに接続されたVSCodeウィンドウ(SSH)
    →選択したDockerコンテナを起動します
    (このVSCodeウィンドウから「Visual Studioコードを添付」できませんでした)

  3. ローカルマシンに接続されたVSCodeウィンドウ
    →「Docker」拡張機能をクリックすると、リモートで実行されているDockerコンテナが一覧表示されます。次のいずれかのオプションを使用して、実行中のコンテナにVSCodeをアタッチします。

    • 目的のコンテナーを右クリックし、[Visual Studioコードのアタッチ]を選択します
    • F1を押して、[">リモートコンテナ:実行中のコンテナにアタッチ...]を選択し、後でお好みのコンテナを選択します

    3番目のVSCodeウィンドウが開き、Dockerコンテナーに接続されます。

このソリューションの長所と短所

(+)「Remote Explorer」拡張機能を使用すると、リモートマシンで以前に使用したプロジェクトフォルダーに直接接続して開くことができます。

(-)2つのVSCodeウィンドウの代わりに3つのVSCodeウィンドウ(ローカルマシン、リモートsshおよびリモートコンテナー)が必要

0
ai2ys