Closed2

ssh+Dev Containerでサブコンテナのサービスにアクセスする

js4000alljs4000all

VSCodeのRemote-SSH拡張機能では、Portsタブで手軽にポートフォワーディングを利用できる。

また、Dev Containerを使っている時、Docker Composeを併用することでサイドカー的にサブコンテナを起動できる。


Remote-SSH経由でDev Containerを使っている状態では、接続先がメインコンテナの内側であるため、メインコンテナ内でlistenしているポートに対してしかフォワードできない。
しかし、どうにかしてサブコンテナ上のサービスにローカルからアクセスしたいことがある。


解決策は非常に簡単。New Windowするなどして、VSCodeを二面開けば良い。

コンテナホストに繋がっている状態の方のウィンドウでは、compose.ymlで設定した公開ポート(コンテナホストがlistenする)を全く問題なくフォワードできる。

js4000alljs4000all

sshのセッション数が制限されているなどの理由で二面開けない場合は、socatを使う方法もある。

メインコンテナのDockerfile
RUN apt-get update && apt-get install -y socat
devcontainer.json
  "forwardPorts": [41880, 48080],
  "postCreateCommand": "socat TCP-LISTEN:41880,fork TCP:nodered:1880 & socat TCP-LISTEN:48080,fork TCP:nginx:80",
このスクラップは4ヶ月前にクローズされました