Skip to content

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

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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