Japanese Stable CLIP を試してみた

VScode で Docker のコンテナに接続する

Docker でコンテナを使うと、環境構築がうまく行かなかった場合にすぐにリセットできて便利です。
ですが、VScode の Python 拡張などが便利なので、VScode でコンテナ内のコードを編集できると更に便利です。VScode の拡張機能を入れることで、それが可能になりますが、いくつかの方法があります。どの方法が自分にあっているか整理してみました。

前提として、PC には Windows 10 をインストールしています。WSL2 で Ubuntu を導入し、その Ubuntu に Docker 環境を用意しています。
また、コンテナを動かす PC だけでなく、他の PC から接続することも想定しています。

方法1. 「Remote - SSH」 と 「Dev Containers」 拡張を使う

まず SSH で Ubuntu に接続し、「Dev Containers」 拡張でコンテナに接続します。コンテナに接続すれば、コンテナ内のファイルを、ローカルと同様に VScode 上で編集できます。
なお、上記構成の場合は、Remote - SSH ではなく 「WSL」 拡張でも Ubuntu に接続することが可能ですが、この場合、コンテナに接続するには 「Docker」 拡張が必要になり、Docker 拡張は Docker Desktop が必要になります。
そのため、Docker Desktop を使用しない場合は、Ubutnu へ SSH 接続する必要があります。

Ubuntu へ SSH 接続できればいいので、別 PC から同様の方法で接続することも可能です。それができるのも、この方法のメリットだと思います。

方法2.「Remote - SSH」拡張を使う

「Remote - SSH」 拡張を使えば、SSH が可能な相手にはリモート接続できるので、Docker ホストの Ubuntu を経由せずに直接コンテナへ接続することが可能です。
ただ、この場合はコンテナに SSH 接続できるように準備する必要があります。作って消してのサイクルを手軽にできることがメリットの一つなので、そこにひと手間入れるのはデメリットに感じます。
方法1 の 「Dev Containers」 拡張であれば、Docker で作ったコンテナは自動的に接続対象としてリストアップされるので、コンテナ個々に何か設定する必要はありません。
一方で、SSH するためにはホスト (Windows) でポート転送などの準備をする必要があり、それは方法1 の Ubuntu へ SSH する場合と同じような話です。(同一 PC 内だけであれば設定不要ですが、今回は別 PC からの接続も想定しているため)
そのため、方法1 と比べてこの方法を選択する、積極的な理由はないように感じます。

方法3.「Docker」拡張と Docker Desktop を使う

Docker Desktop を使用していないので、実際に使ったことはない方法ですが、Windows に Docker Desktop をインストールしてコンテナを使用している場合は、「Dev Containers」 拡張で接続先に直接 Docker のコンテナが指定できます。
この辺は統合されている便利さですね。Docker Desktop を使っている場合は、この方法が最適ではないかと思います。
別 PC から接続することが可能かどうかも未確認です。


結論

今のところ、Docker Desktop は使用していないため、また、別 PC から GPU が使えるコンテナに接続したい場合もあることを考慮して、方法1 の形でリモート接続環境を用意しました。



準備

  1. Ubuntu に SSH 接続できるようにする
    WSL の Ubuntu から、以下のコマンドで、Ubuntu に SSH server をインストールします。
    sudo apt install openssh-server
    sudo systemctl enable ssh
    sudo systemctl start ssh
    また、この先の手順での作業を簡略化するために、鍵認証できるようにしておくと便利です。(パスワード認証だと、VScode で接続していると頻繁にパスワードの入力を求められます)
    「ssh-keygen」コマンドを実行し、作成された公開鍵を Ubuntu の「.ssh/authorized_keys」に追記します。

  2. VScode に拡張機能をインストール
    Windows で VScode を起動し、拡張から「Remote Development」を検索してインストールします。

    この拡張は、複数の拡張をひとまとめにしたパッケージです。これを一つインストールすれば、まとめて「Remote - SSH」、「Dev Containers」 拡張もインストールされます。

  3. SSH の設定を編集する
    Windows のユーザープロファイルの直下に「.ssh」というフォルダを作成し、その中に「config」という名前でテキストファイルを作成します。そのファイルに以下のように記述します。
    Host Ubuntu
      HostName [127.0.0.1]
      Port [22]
      User [Username]
      IdentityFile /path/to/id_rsa

    Username は Ubuntu のユーザー名です。
    この時点で、Windows のターミナルから、以下コマンドで Ubuntu へ SSH 接続が可能かを確認しておくといいでしょう。
    ssh ubuntu


手順

準備が終わったら、以下の手順でコンテナに VScode を接続できます。
1.Windows で VScode を起動
2.「リモートエクスプローラー」を開く


3.SSHを選択し、準備で作成した接続名を選択し、同じウインドウで接続をクリック


4.Ubuntu が「接続済み」となったことを確認し、リモート接続のリモートエクスプローラーのドロップダウンリストから「開発コンテナー」を選択


5.コンテナーの一覧が表示されるので、接続したいコンテナーを選択し「同じウインドウで接続」をクリック


6.コンテナーに VScode で接続できました。


これでかなり便利になりました。

コメント