Dockerコンテナの内部から、そのコンテナがLinuxホスト上で、またはDocker Machine上でネイティブに実行されているかどうかを調べる方法はありますか?Dockerコンテナがネイティブに動作しているのか、Docker Machineを使用しているのかをプログラムで検出する方法はありますか?
質問の背景には、私は私のTomcatベースのコンテナでJMXを有効にしたいということですが、そのために、私はホストの外部IPアドレスを知っている必要があります:
- Docker-で実行している場合マシン、これは192.168.99.100のようなものです。
- Linux上でネイティブに実行されている、これはホストのIPアドレスです。
- Mac用Dockerで実行している場合、これもホストのIPアドレスです。
私はJMXを有効にしてロールアウトしたいDocker Tomcatイメージを持っていますが、人々がそれをネイティブに使用するのかDocker-Machineで実行するのかは分かりませんIPアドレスは、Tomcatを起動するときにjava.rmi.server.hostname
パラメータを指定します。
(それが実行しているどこかを見つける)のいずれか
- は、容器の内側からそのIPアドレスを見つける方法はありますか
- が外からそれを見つける(例えばドッカ-コンで)、それをコンテナに入れてから始めるのですか?この場合、
DOCKER_HOST
環境変数は役に立ちますか? Docker Machineを実行しているときはtcp://192.168.99.100:2376
に設定されています - この変数はDocker Machineを実行していないときにも使用されますか?
コンテナ(またはDocker Compose)の起動時に手動でIPアドレスを入力する必要がないようにしたいと考えています。
については、[docker api](https://docs.docker.com/engine/reference/api/docker_remote_api/)を使用してコンテナに関する情報を入手することができます。 –
@ Mohsen89zあなたが実行しているホストのタイプを見つけるために、ドッカーで何を照会しますか? – Matt
私はそれを実行しているホストから実行時に環境変数を注入しなければ、やりにくいと思います。おそらく、人々のために情報を収集するコンテナを実行するためのスクリプトを設定することができます。ドッカーで動作するような[jolokia](https://jolokia.org)を試してみてください。 – Matt