1. トップ
  2. 新着ニュース
  3. IT
  4. パソコン

Windows Subsystem for Linuxガイド 第38回 WSL2でDockerを使う その4「ネットワーク接続Dockerエンジン編」

マイナビニュース / 2024年7月2日 13時42分

LAN側からのアクセスを行わせたい場合、WSLのネットワークモードをMirroredにする必要がある。WSLがMirroredネットワークの場合、Win32側からコンテナにアクセスする場合、コンテナをホストネットワーク(host)で起動する。
NATモードの場合

WSLでDockerエンジンを使うのは、例えていえば、仮想マシンの中で動作しているLinuxでDockerを使うのと似ている。つまり、コンテナのホストは物理マシンではなく、直接ネットワークに接続しているわけでもない。このため、一般的な物理マシン上で動作しているLinuxでDockerを使うのとは環境が少し異なることに注意する必要がある。

それでは、NATモードの場合を具体的に見ていくことにしよう。(表02)は、NATモード時に、Dockerエンジンのコンテナで動作しているサービス(ここでは前回同様nginxを使った)のネットワーク接続を調べたものだ。ここでは、Win32側、同一マシン上のWSLディストリビューション側、LAN側からアクセスを試みた。ホストアドレスとしてlocalhost、127.0.0.1、Win32側IPv4アドレス、WSL側IPv4アドレスを試した。

NATモードの場合、WSLとWin32側は異なるIPアドレスを持ち、かつ、WSL側ではIPv6を利用できないため、URL指定ではIPv6アドレスを使うものは含めていない。

前述のように.wslconfigでlocalhostForwardingを有効にする。具体的には、ユーザーのホームディレクトリ(C:\User\<ユーザー名>)にある.wslconfigの[WSL2]セクションに以下の記述を入れる。

[wsl2]
localhostForwarding=true

この.wslconfigファイルに関しては、過去記事「Windows Subsystem for Linuxガイド 第3回 WSL2動作設定編」を参照されたい。

このlocalhostForwardingは、WSLディストリビューション側でListenしているTCPサービスに関しては、Win32側でlocalhostまたは127.0.0.1でのアクセスを可能にするもの。コンテナであるかどうかには直接関係ない。通常、これを有効にしておいても、特に問題になることはない。

ただし、Win32側とWSL側で、同一ポート番号を使うことはできない。基本的には、ポート番号の利用は、早い者勝ちである。コンテナの場合、ポート番号は簡単に変更できるので、万一衝突するような場合には、変更した方がいいだろう。もちろん、Win32側のサービスを止めるというやり方でも可能だ。

この記事に関連するニュース

トピックスRSS

ランキング

複数ページをまたぐ記事です

記事の最終ページでミッション達成してください