Dockerコンテナがポート経由でホストシステムに接続できない理由は何ですか?Docker:ホストマシンへのポートのオープン方法
特に、私はDockerホストマシン(Dockerブリッジの172.17.0.1
)で動作しているMySQLサーバーに接続しようとしています。しかし、何らかの理由でポート3306
は常に閉じています。
再現するための手順は非常に簡単です:
- 設定のMySQL(または任意のサービス)
0.0.0.0
上(~/.my.cnf
でbind-address=0.0.0.0
)を聞くために 実行
$ docker run -it alpine sh # apk add --update nmap # nmap -p 3306 172.17.0.1
さんそれ。どんなに私が何をすべきか、それは常に私もUbuntuのイメージ、Windowsホストマシン、および他のポートと同じ試みた
PORT STATE SERVICE
3306/tcp closed mysql
表示されません。
可能であれば、私は--net=host
を避けたいのですが、コンテナ化を適切に使用するだけです。
この回答を見る:http://tackoverflow.com/a/24326540/645002これは非常に徹底しています。 – jaxxstorm
になる必要があります。@Frap Yep、これは素晴らしい答えです。どのようにブリッジモードを使用してホストのIPアドレスなどを取得するかについての情報を提供しています。しかし残念ながら、この問題は解決しませんでした。 – Opossum
ドッカーによる自動ブリッジ設定を完全にボークすることなく(あなたがiptablesのmasochistではないと仮定して)、 - net = host .....を除いて--add-hostを介してホストのカスタムDNSエントリを渡します。 – user2105103