はじめに
VScodeを用いてリモート環境内のdocker環境にアクセスします。(接続のイメージは図の通り。)
私はこの方法を知らずこれまでjupyter-labで開発を行ってきましたが、pyファイルの修正やweb系のコード編集が非常に困難でした。。(docker contextを使うだけで簡単に実現できるとは。。)
非常に役に立つ方法ですので、皆さんもぜひ試してみてください!
参考になったと思った方はぜひLGTMいただけると幸いですm(_ _)m
目次
- ssh接続設定
- docker contextの設定
- リモート内のdockerへの接続
- ローカル内のdockerへ戻る
#1. ssh接続設定
クライアント側で、ssh接続条件を設定ファイルに記入する
Host home-ubuntu
HostName home-ubuntu.mydns.jp
IdentityFile ~/.ssh/home_ubuntu
User shota
Port 5504
TCPKeepAlive yes
IdentitiesOnly yes
※ sshサーバー構築から秘密鍵の設定を行う場合は、以下URL参照
https://qiita.com/s-inoue-git/items/fdd7aac2996297424a1f
#2. docker contextの設定
docker contextとは?(以下ドキュメントから引用)
1 つの Docker CLI に対しては、複数のコンテキスト(context)を持たせることができます。 各コンテキストには、さまざまなクラスターやノードの管理に必要となる、エンドポイント情報やセキュリティ情報が含まれています。 docker context コマンドを使うと、そういったコンテキストを簡単に設定したり切り替えたりすることができます。コンテキストの設定を一度行ってしまえば、トップレベルのコマンド docker context use <コンテキスト名> を実行するだけで、コンテキストを簡単に切り替えられるようになります。
以下のコマンドからcontextを作成、切り替えを行います
# 1. contextの追加
$ docker context create home-ubuntu --docker "host=ssh://shota@home-ubuntu"
# home-ubuntu
# Successfully created context "home-ubuntu"
# 2. contextの切り替え
$ docker context use home-ubuntu
# home-ubuntu
# 3. contextの確認
$ docker context ls
# NAME TYPE DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR
# default moby Current DOCKER_HOST based configuration # unix:///var/run/docker.sock swarm
# home-ubuntu * moby
dockerコマンドでイメージやコンテナを確認すると、ホスト側のdockerに切り替わっていることがわかる
$ docker ps
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# 451ead9000bf tensorflow-from-scratch "/bin/bash" 2 hours ago Up 2 hours tensorflow-from-scratch
3. リモート内のdockerへの接続
remote接続の拡張アイコンをクリックし、windowマークorフォルダマークをクリックすると、先ほど切り替えたホスト側のdocker conteainerを見ることができる
アクセス成功!
#4. ローカル内のdockerへ戻る
使用するdockerをローカルに対象を戻す場合
$ docker ps
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# 451ead9000bf tensorflow-from-scratch "/bin/bash" 2 hours ago Up 2 hours tensorflow-from-scratch
# 対象を戻す場合
$docker context use default
$ docker ps -a
#CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
#0b0edc2e9df2 conda-init-env "bash" 2 hours ago Exited (255) 44 minutes ago conda-init-env
#↑異なるcontainerが表示されている
以上です!
参考になったと思った方はぜひLGTMいただけると幸いですm(_ _)m