231
216

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 5 years have passed since last update.

ssh接続先のdockerコンテナにVSCodeのRemote Developmentで繋ぐ

Last updated at Posted at 2019-11-05

はじめに

Remote Developmentの登場によって、サーバやdockerコンテナにVSCodeで簡単に繋ぐことができるようになりました。
しかし、「サーバ上のdockerコンテナ」という二段階のリモート処理を実現する手段が見当たらなかったので、記事にしました。

サーバやdockerコンテナにVSCodeで繋ぐ

まずは基本であるサーバ or dockerコンテナにVSCodeで繋ぐ一段階のリモート処理について説明します。

サーバにVSCodeで繋ぐ

まずは~/.ssh/configを作ります。
例えば、こんな感じ。

Host aws
  Hostname 12.345.67.890
  User ubuntu
  IdentityFile ~/.ssh/hoge.pem

あとは、以下のページのようにRemote Developmentで繋ぐことができます。
https://dev.classmethod.jp/etc/vs-code-remote-development-ec2/

dockerコンテナにVSCodeで繋ぐ

dockerコンテナが作成された状態でRemote Developmentボタンをクリックすると、以下のようにコンテナ一覧が表示されるので、繋ぎたいコンテナを右クリック→"Connect to Container"でコンテナに接続できます。
Screenshot from 2019-11-05 22-46-47.png

dockerコンテナにssh接続

本記事では多段sshを利用してサーバ上のdockerコンテナに接続します。
なので、dockerコンテナにssh接続できるようにします。

まず、以下の記事を参考にDockerfileを作り、docker buildします。
https://qiita.com/YumaInaura/items/1d5c18a9e55484ccad89

その後、以下のようなコマンドでコンテナを走らせます。

docker run -d -p 10000:22 image_name

10000のところは任意のポート番号で、自由に変更可能です。
image_nameはdocker imageの名前です。

そして、以下のようなコマンドでssh接続します。

ssh root@127.0.0.1 -p 10000

rootの部分はDockerfileに書いたユーザ名、10000の部分はdocker run時に書いたポート番号で置き換えます。

以上の方法でdockerコンテナにssh接続できますが、この方法だとPATHが通っていない状態でdockerコンテナの中に入ってしまうので、以下のissueを参考に、/etc/profileにPATHをexportするようDockerfileに記述しておきます。
https://github.com/NVIDIA/nvidia-docker/issues/36

多段sshでサーバ上のdockerコンテナにVSCodeで繋ぐ

あとは以上の方法を組み合わせるだけです。
まず、~/.ssh/configに以下のように記述します。

Host aws
  Hostname 12.345.67.890
  User ubuntu
  IdentityFile ~/.ssh/hoge.pem

Host aws_docker
  Hostname 127.0.0.1
  User root
  Port 10000
  ProxyCommand ssh -W %h:%p aws

サーバー上でコンテナを走らせた上でVSCodeを見るとaws_dockerが見えるので、上記と同様に接続します。

おわりに

本記事では多段sshを利用して、サーバ上のdockerコンテナにVSCodeで繋ぐ方法を解説しました。
「もっと簡単な方法あるよ」という方は是非教えてください!

231
216
3

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
231
216

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?