Skip to content

Windows 10 HomeでDockerのポートフォワードがうまくいかない問題の対処法 #12

@wf-yamaday

Description

@wf-yamaday

前提

状態

ここではTablePlusを介してDockerコンテナ上で動作するMySQLサーバにアクセスできない状態を扱います.

サンプルリポジトリではMySQLをDockerコンテナ上で起動しホストマシンの53306ポートにDockerコンテナの3306ポートをポートフォワードしています.(コンテナ名は'mysql_tech_semi_db_1`)

$ docker container port mysql_tech_semi_db_1
3306/tcp -> 0.0.0.0.:53306

このようにGit Bashからはポートフォワードがうまく行っている状態です.

しかしTablePlusを使用して53306ポートで動作するMySQLサーバに接続を試みても以下のようにエラーとなり接続できません.

image

原因

Windows 10 HomeではDockerはVirtualBox上のVM上で動作しており,Dockerコンテナのポートフォワードの設定をしてもWindows OSのポートとは接続されていないためこの現象が起きます.

解決策

VirtualBoxからVMのポートフォワードを設定することで解決します.

1. VirtualBoxでDefault VMのポートフォワードの設定を変更

VirtualBoxを起動してDefaultという名前のVMの設定を変更します,

スクリーンショット 2020-06-24 17 12 12

ネットワークの設定からポートフォワーディングの設定を開きます.

スクリーンショット 2020-06-24 17 12 34

ポートフォワーディングルールの追加をします.
 
スクリーンショット 2020-06-24 17 12 52

新しく追加されたRule 1の行を編集していきます.

スクリーンショット 2020-06-24 17 32 15

ここまでの設定が完了したら「OK」を押して順にウィンドウを閉じます.

設定がは反映されるとWindwos Defenderからの警告が出ます.
「アクセスを許可する」をクリックしてください.

スクリーンショット 2020-06-24 17 14 03

2. TablePlusから再接続

先ほどの設定のままTablePlusから「Test」を実行した際に「connection is ok」となることを確認します.

image

確認できたら「Connect」を実行することでMySQLサーバに接続できます.

TablePlusの操作は割愛しますが「semi」のデータベースを選択すると以下のようにUsersテーブルのみが存在するDBが確認できるかと思います.

image

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentationwindowswindowsに関連すること.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions