Windows Subsystem for Linux 2 でDocker を使用する(その1)

2022年11月16日(水)
赤井 誠
今回と次回の2回で、WSL2でDockerを使用する方法を紹介します。

Docker コンテナを外部のマシンからアクセス可能にする。

これまでの手順でWindowsマシン内からDockerコンテナにアクセスできることを確認しました。しかし現時点では、外部のマシンからこのDockerコンテナにアクセスできない状態になっています。そのためWindows マシンを受信ホストに設定して外部からアクセス要求があった場合にWSL2にアクセスを転送するように設定することにより、Dockerコンテナにアクセスできるようにします。

IPアドレスの確認

1. 下部の一番左のアイコンを右クリックします。

2. メニューが表示されます。

3. 表示されたメニューにある「Windows ターミナル」をクリックします。

4. Windows ターミナルが起動します。

5. Windows Terminalにキーボードより下記コマンドを入力し、ENTERキーを押して表示されたWindowsのIPアドレスをメモします。

リスト4:

> ipconfig

※画像のIPアドレスはセキュリティ対策として加工してあります。

6. 続けてキーボードより下記のコマンドを入力しENTERキーを押して表示されたWSL2のIPアドレスをメモします。

リスト5:

> wsl -e ip addr show

※画像のIPアドレスはセキュリティ対策として加工してあります。

7. タスクバーのEdgeのアイコンをクリックしてwebブラウザーを起動します。

8. ブラウザーに URLを入力して起動したnginxのDocker コンテナにアクセスできるか確認します。

※画像のIPアドレスはセキュリティ対策として加工してあります。

アクセス転送設定

1. 下部の一番左のアイコンを右クリックします。

2. メニューが表示されます。

3. 表示されたメニューにある「Windows ターミナル(管理者)」をクリックします。

4. アプリでのデバイス変更の許可を聞かれるので「はい」をクリックします。

5. Windows Terminalが起動します。

6. Windows Terminalにキーボードより下記コマンドを入力しENTERキーを押して、Windows マシンへのアクセスをWSL2へ転送するように設定します。

リスト6:

> netsh interface portproxy add v4tov4 listenaddress=WindowsのIPアドレス listenport=80 connectaddress=WSL2のIPアドレス connectport=80

※画像のIPアドレスはセキュリティ対策として加工してあります。

7. 設定したら再びWindows Terminalでキーボードより下記コマンドを入力しENTERキーを押して設定を確認します。

リスト7:

> netsh interface portproxy show v4tov4

※画像のIPアドレスはセキュリティ対策として加工してあります。

ファイアウォールの設定を変更する

先に記述した手順でWindows マシンへのアクセス要求をWSL2に転送できるようにしました。しかしそのままでは外部マシンからWindowsマシンへのアクセス要求はWindowsにインストールされているMicrosoft Defenderのファイアウォールで拒否されてしまうため、外部のマシンからアクセスを受け付けるように設定を変更します。

1. 下部の一番左のアイコンをクリックします。

2. ウィンドウが表示されます。

3. 表示されたウィンドウ右上の「設定」をクリックします。

4. 設定ウィンドウが表示されるので左側の「ネットワークとインターネット」をクリックします。

5. 右側にネットワークの設定一覧が表示されるので一番下にある「ネットワークの詳細設定」をクリックします。

6. 右側にネットワークの詳細設定一覧が表示されるので一番下にある「Windows ファイアウォール」をクリックします。

7. ファイアウォールの設定ウィンドウが表示されるので「詳細設定」をクリックします。

8. アプリでのデバイス変更の許可を聞かれるので「はい」をクリックします。

9. ファイアウォールの詳細設定ウィンドウが表示されます。

10. 左側にある「受信の規則」をクリックします。

11. 受信の規則の一覧が表示されます。

12. 右側にある「新しい規則」をクリックします。

13. 受信設定ウィンドウが開きます。規制の種類の設定は「ポート」を選択して「次へ」をクリックします。

14. ポートの設定へ移ります。「特定のローカルポート」で80と入力して「次へ」をクリックします。

15. 操作の設定へ移ります。「接続を許可する」が選択されている事を確認して「次へ」をクリックします。

16. プロファイルの設定へ移ります。すべてのチェックボックスにチェックが入っている事を確認して「次へ」をクリックします。

17. 規制名の設定へ移ります。「名前」にHTTPと入力して「完了」をクリックします。

18. 受信の規則が追加されます。

他のマシンからのアクセス確認

これまでの設定でWSL2のDockerコンテナは外部からのアクセスが可能となりましたので、アクセスができるかどうかを確認します。

1. 外部マシンでWebブラウザーを起動します。

2. URL入力欄にWindowsマシンのIPアドレスを入力します。

※画像のIPアドレスはセキュリティ対策として加工してあります。

3. 起動したnginxのDocker コンテナにアクセスできるか確認します。

※画像のIPアドレスはセキュリティ対策として加工してあります。

次回はWSL2のGUIアプリをWindowsで使用する方法などを紹介します。

MKTインターナショナル株式会社 代表取締役社長
日本HPに入社後、ソフトウェアR&D、事業企画、マーケティング部門を歴任。Linux事業リーダーとして日本HPをLinux No.1ベンダーに、HPC事業を立ち上げHPC No.1ベンダーへと導く。2011年4月MKTインターナショナルを起業し、現職。『できるPRO MySQL』(インプレス刊)等著書多数。

連載バックナンバー

開発ツール技術解説
第4回

Windows Subsystem for Linux 2 でDocker を使用する(その2)

2022/11/24
前回に引き続き、WSL2でDockerを使用する方法を紹介します。
開発ツール技術解説
第3回

Windows Subsystem for Linux 2 でDocker を使用する(その1)

2022/11/16
今回と次回の2回で、WSL2でDockerを使用する方法を紹介します。
開発ツール技術解説
第2回

Windows 11でLinuxを使う:Windows Subsystem for Linux 2の設定

2022/7/26
連載2回目となる今回は、Windows Subsystem for Linux 2のインストール・設定を解説します。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています