リモートサーバーのコンテナで作業したい。しかし、それは機能しません。
環境:
ローカル:Windows 10
Sshのローカルターミナル:Windows 10のWSL
サーバー:Ubuntu 18.04
この二つの記事をチェックしました。
https://code.visualstudio.com/docs/remote/containers-advancedhttps://code.visualstudio.com/docs/containers/ssh
私はこれらのステップに従いました。
SSH経由でDockerエンジンを実行しているリモートノードに到達できる場合、コンテナー内にさらに別のSSHサーバーが必要なのはなぜですか?コンテナーを実行しているホストから、ttyを使用する、つまり接続することが可能で安全です。
これは可能ですが、コンテナ内で実行されているSSHDを使用するのは良い考えではないと思います。 SSHDが役立つようにするには、すべてのコンテナで競合しないポートをリッスンする必要があります。そうしないと、同じノードで同じポートを公開する2つのコンテナが、同じノードで実行されている他のサービスと同様に競合します。
もちろん、ポートは-Pオプションを使用してランダム化できますが、それほど便利ではありません。また、すべての機構がホストソフトウェアによって提供されるホストレベルよりも、コンテナーレベルでキーとユーザーを管理する方が便利です。
SSHDですべてのコンテナーをロードすると、コンテナーのサイズが大きくなります。 Kubernetesでは、PodにIPがあり、コンテナはIDで接続できるため、「Docker-Host-> container」などのパスPod-> Containerを介してコンテナ内でSSHDを実行しなくても、すべてのコンテナに到達できます。
上記の手順に従って( https://stackoverflow.com/a/61728799/11687201 )私は、SSHリモートおよびリモートエクスプローラー拡張機能の使用方法を理解しました。最初のステップは上記と同じです:
"docker.Host": "tcp://localhost:23750"
LocalForward localhost:23750 /var/run/docker.sock
備考:以前は、このスレッドで以前に説明されたソリューションを使用しました( https://stackoverflow.com/a/61728799/11687201 )。以下で説明する解決策が機能する前に、ローカルマシンとリモートマシンの両方を再起動する必要がありました。
その後、複数のVSCodeウィンドウを使用する必要があります。
ローカルマシン:VSCodeを起動し、「リモートエクスプローラー」を使用して、新しいVSCodeウィンドウを使用してリモートマシンに接続します。
リモートに接続されたVSCodeウィンドウ(SSH)
→選択したDockerコンテナを起動します
(このVSCodeウィンドウから「Visual Studioコードを添付」できませんでした)
ローカルマシンに接続されたVSCodeウィンドウ
→「Docker」拡張機能をクリックすると、リモートで実行されているDockerコンテナが一覧表示されます。次のいずれかのオプションを使用して、実行中のコンテナにVSCodeをアタッチします。
3番目のVSCodeウィンドウが開き、Dockerコンテナーに接続されます。
(+)「Remote Explorer」拡張機能を使用すると、リモートマシンで以前に使用したプロジェクトフォルダーに直接接続して開くことができます。
(-)2つのVSCodeウィンドウの代わりに3つのVSCodeウィンドウ(ローカルマシン、リモートsshおよびリモートコンテナー)が必要