2017-05-18 7 views
1

コンテナが稼動しているドッキング・コンテナ内のCentOSホスト・マシンのIPアドレスを知る方法はありますか?私がLinuxマシン10.10.10.10 IPにドッカーcontainer1とcontainer2を実行している場合、私は自分のJavaコードからIPを問い合わせたいと言いましょう。 Javaコードはドッカーコンテナの内部にあります。私は実際にドッカーの群れとしてこれらのサービスを実行しています。ドッキング・コンテナ内のホスト・マシンのIPアドレスを読み取る

+0

あなたがこれをしようとしている_why_に関するいくつかの追加情報は、別の方法(例: IPではなく、いくつかの魔法)。たとえば、通常Dockerホストには* internal * IP 172.17.0.1があります。これは、あなたが何をしているのかに関係します。もちろん、コンテナの外にそのIPを公開しているのであれば、無駄です。 – otupman

答えて

1

Dockerは、コンテナをホストから分離しようとしています。環境変数で

ホストがコンテナ

にそれを「与え」ない限り、理論的には、コンテナは、このIPアドレスFO知っておくべきではないいくつかのアイデア

を実行時に

docker run -e "host_IP=10.10.10.10"...

または

を含むファイルmy_envのいずれかで

host_IP 10.10.10.10

docker run --env-file my_env

でそれを使用するには、ビルド時にドキュメント環境変数に

https://docs.docker.com/engine/reference/commandline/run/#set-environment-variables--e---env---env-file

を参照してください

はあなたのDockerfileにライン

を持っていますENV host_IP 10.10.10.10

ドキュメント

https://docs.docker.com/engine/reference/builder/#env

あなたは、ホストと

あなたがホストを検索するには、次のnetstatコマンドを使用することができます

docker run -v /etc/hosts:/etc/hosts ...

+0

ありがとう、私は同じように感じました。しかし、Dockerファイル内の環境変数としてIPを与えることは、ドッカー画像を再構築する必要があるため、ホストマシンのIPが変わった場合には間違いです。ではない?私はまた実行時に環境変数を与えることを考えていましたが、ホストマシンのIPが変更された場合は、新しいipを取得するためにコンテナを再起動する必要があります。右? – curiousengineer

+0

'-v/etc/hosts:/ etc/hosts'やその他のアイデアの正しいオプションです。 http://stackoverflow.com/documentation/docker/6481/passing-secret-data-to-a-running-container#t=201705181637267206782も参照してください。 – user2915097

0

とコンテナの間に/ etc/hostsファイルを共有することができますコンテナ内からのip:

netstat -nr | grep '^0.0.0.0' | awk '{print $2}' 
関連する問題