2017-06-02 9 views
2

を接続する私は、次のコマンドを使用してtest_mysqlを作成しました:は、ローカルホストのMySQLドッカーの混乱

docker run -d -p 3306:3306 --name=test_mysql --env="MYSQL_ROOT_PASSWORD=123" mysql 

私はdocker inspect test_mysqlを使用してIPアドレスを得ました。 IPアドレスは172.17.0.2です。

奇妙なことである私が

mysql -uroot -p123 -h 172.17.0.2 -P 3306 

発生したエラーを使用して、私のローカル上でMySQLサーバに接続しようとしたときに:私は代わりにそれをローカルホストのIPアドレスを使用している場合、

ERROR 2003 (HY000): Can't connect to MySQL server on '172.17.0.2' (51) 

しかし、行った作業は:私はを使用した容器に接続できない理由

mysql -uroot -p123 -h 127.0.0.1 -P 3306 

私の質問はの結果はlocalhost IPで動作しますか?

答えて

1

1)localhost IPは動作しますか? のコンテナを開始するにはもう一度コマンドを見てみましょう:

docker run -d -p 3306:3306 --name=test_mysql --env="MYSQL_ROOT_PASSWORD=123" mysql 

-p 3306:3306は、コンテナのポート3306に「バインド」ホストのポート3306になります。その結果、ポート3306に接続があれば、コンテナのポートに転送されることがわかります。 ので、ローカルIP上のあなたの接続が動作します:私は、コンテナの使用ドッキングウィンドウに接続できない理由

mysql -uroot -p123 -h 127.0.0.1 -P 3306 

は)Docker page

2に詳細を参照してください結果

を検査それはあなたのコンテナと思われますDockerをインストールするとデフォルトで作成されることが多いデフォルトブリッジネットワーク(docker0にはIP:172.17.0.1があるかもしれません)に接続されています。 Docker network pageで詳細を見つけることができます。そのため、コンテナ内でブリッジを参照することができます(pingコマンドを使用することはできますが、ローカルホストからは172.17の検索/解決方法がわからないことがあります)。 0.2で、そのエラーが発生しました。