2016-04-08 7 views
2

2つのドッカーコンテナを--net = hostオプションで実行しているので、ネットワーキングが透過的です(ドッキングコンテナーはホストと同じネットワーキングデバイスを使用します)。Docker:ホストの--net = hostオプションを使用してdockerコンテナのmysqlにアクセスします。

docker network inspect host 
[ 
    { 
     "Name": "host", 
     "Id": "32ddf8f58d520e49a0b3f296d6d03134b24d7c503309e1c35e04c248010aa64b", 
     "Scope": "local", 
     "Driver": "host", 
     "IPAM": { 
      "Driver": "default", 
      "Options": null, 
      "Config": [] 
     }, 
     "Containers": { 
      "0e41eb0b07d2751db99a204a3a69a2446bf5b869150bc5741df670e56dbce670": { 
       "Name": "sleepy_goldstine", 
       "EndpointID": "cc8f2c4da055ae7e608c127552f67753c319aeb603234c418a0ebe8958c1025a", 
       "MacAddress": "", 
       "IPv4Address": "", 
       "IPv6Address": "" 
      }, 
      "71de826121e7222020eec8be8b3a737f3297f8c3aa99d21f0f7016d6aca6f668": { 
       "Name": "tender_goodall", 
       "EndpointID": "2da0468dbaf1e6b877984cbeb6b2a775786259fec7e83eb373c1d25fe715e16f", 
       "MacAddress": "", 
       "IPv4Address": "", 
       "IPv6Address": "" 
      } 
     }, 
     "Options": {} 
    } 
] 

外部からのドッキング用のコンテナ内のサーバーサービスにアクセスできます。しかし、動作しないものがあり、その上にはさみで走り始めています...

ドッカーホストには、ポート3306で動作するmysqlデータベースがあります。問題はありません。

ドッカー容器1は、同様に、ポート3307上で実行されているとドッカー容器2は

のMySQL -P 3307 -uユーザ-p DBNAMEに

を使用して、しかし、ポート3308

上で実行されているmysqldのたmysqldのました私はホストからmysqlデータベースにアクセスできません。最初のドッカーインスタンスでmysqlを実行するためのポートを提供しても、常にホスト上のmysqlデータベースに送られます。このような動作につながるiptablesルールはありません。ファイアウォールをオフにしても、動作は変わりません。

my.cnfでは、mysqlサーバが0.0.0.0(127.0.0.1)にバインドされていても動作しません。

私は迷子になり、誰かが解決策を見て欲しいと願っています。 --host = netオプションを削除してポートエクスポージャーを操作することはオプションではありません。これは、コンテナへのネットワークのパフォーマンスを低下させるためです。

編集:ドッカーコンテナ内のデータベースがアクセス可能であり、設計どおりに動作することを忘れてしまった。 Dockerコンテナからのポートを使用していても、接続が常にホスト - >ホストに向けられるため、ホスト - >ドッカーからの接続は動作しません。

答えて

2

Dockerネットワーキングとは関係ありません。 MySQLクライアントは、MySQLサーバによって公開されるホストマシン上でUnixソケットを使用する傾向があります。クライアントにホストIPアドレス(-h 127.0.0.1)を指定するだけで、TCPを使用するようになります。

+0

あなたは私のヒーローです!解決済み! – Blacksheep

+0

@Blacksheep私はそれを助けてくれてうれしいです:-)私はこの問題を何度もlocalhostへのMySQLポートをトンネリングすることで何度も経験しました。 'localhost'を指定しても動作しないことに注意してください。より期待された方法で動作するようにMySQLクライアントを設定する方法については、[質問](http://serverfault.com/q/337818/226737)を参照してください。関連する[MySQLのバグ](https://bugs.mysql.com/bug.php?id=31577)です。 – saaj

関連する問題