21
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【docker context】〜VScodeからリモート環境のdocker内にアクセスする方法〜

Last updated at Posted at 2020-12-19

はじめに

VScodeを用いてリモート環境内のdocker環境にアクセスします。(接続のイメージは図の通り。)
私はこの方法を知らずこれまでjupyter-labで開発を行ってきましたが、pyファイルの修正やweb系のコード編集が非常に困難でした。。(docker contextを使うだけで簡単に実現できるとは。。)
非常に役に立つ方法ですので、皆さんもぜひ試してみてください!

参考になったと思った方はぜひLGTMいただけると幸いですm(_ _)m

image.png

目次

  1. ssh接続設定
  2. docker contextの設定
  3. リモート内のdockerへの接続
  4. ローカル内のdockerへ戻る

#1. ssh接続設定

クライアント側で、ssh接続条件を設定ファイルに記入する

~/.ssh/config
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への接続

以下2つの拡張をVScodeにインストールする
image.png
image.png

remote接続の拡張アイコンをクリックし、windowマークorフォルダマークをクリックすると、先ほど切り替えたホスト側のdocker conteainerを見ることができる
image.png
アクセス成功!
image.png

#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

21
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?