VsCodeでリモートサーバコンテナ内のファイルを開きたい

2022年5月3日

ドッカーが便利すぎてもっと勉強しないといけないと思っている今日この頃です。
さて今回の記事はVsCodeの為の記事という訳ではありませんが、VsCodeでリモートサーバの中にあるコンテナにアクセスするためには、ポートフォワーディングしてあげる必要があるというお話です。(※他にも方法があるみたいなので最後にリンクを張っておきます。)
早速ですがイメージは下記のとおりです。

コンテナ作成

「remote.co.jp」内で下記のコマンドを実行しコンテナを作成してあげます。


docker run -itd --privileged --name example_container centos:latest -p remote.co.jp:10022:22 /sbin/init

ここの「remote.co.jp:10022:22」の意味についてです。
「remote.co.jp」の「port:10022」にアクセスが来たら作成した「example_container」の中の「port:22」にフォワーディングしてあげるという意味です。
この機能でVsCodeがコンテナにアクセスできるようになっています。

SSHの設定

まずは下記のコマンドでコンテナに入ります。


docker  exec -it example_container /bin/bash

コンテナ環境にSSHの設定をしてあげます。
と言ってもインストールしてデーモンを立ち上げるだけです。


OpenSSHのインストール
  yum install openssh
OpenSSH-Serverのインストール
  yum install openssh-server
sshdスタート
  systemctl start sshd
sshd自動起動
  systemctl enable sshd

ユーザを作成する

ユーザの作成の仕方はSAKURAのチュートリアルが絵もあってとても分かりやすかったです。
ネコでもわかる!さくらのVPS講座 ~第二回「サーバーをさわってみよう!」
下記のコマンドでユーザを作成したとしましょう。
今回は鍵ではなくパスワード認証のまま行きますが、任意で変更してください。


ユーザ作成
  adduser testuser
パスワード設定
  passwd testuser

ここまで出来たらlocalhostに戻ってきて「sshのconfigファイル」を作成しましょう。
パスは「C:\Users\user.ssh\config」などが一般的です。


Host example_container                                                                                            
  Hostname remote.co.jp                                                                                     
  User testuser
  Port 10022                                                                                                  
  IdentityFile C:\Users\user\key\id_rsa

これでVsCodeを開くと下記のように「example_container」と表示してあるはずです。

接続先が「remote.co.jp」サーバの「port:10022」になっています。
なので「port:10022」にアクセスしたら「example_container」の「port:22」にアクセスできます。

ちょっと駆け足で書いてしまったので、後日直せたら。。。

ちなみにこのやり方以外にも下記のやり方などが参考になります。
VS CodeからSSHでサーバ上のDockerコンテナを操作する

2022年5月3日