Есть ли способ узнать изнутри контейнера Docker, работает ли этот контейнер изначально на хосте Linux или в Docker Machine?Есть ли способ определить программно, работает ли контейнер Docker изначально или с помощью Docker Machine?
Предыстория вопроса в том, что я хочу, чтобы включить JMX в моем контейнере Tomcat на основе, но для этого мне нужно знать внешний IP-адрес хоста:
- При работе в Docker- Машина, это что-то вроде 192.168.99.100.
- Выполняется из Linux, это IP-адрес хоста.
- Запуск в Docker для Mac, это также IP-адрес хоста.
У меня есть Docker Tomcat образа, который я хочу, чтобы раскатывать с поддержкой JMX, но я не знаю, люди собираются использовать его изначально или работают в Докер-машине, поэтому я не знаю, какое IP, чтобы обеспечить параметр java.rmi.server.hostname
при запуске Tomcat.
Есть ли способ либо
- найти этот IP-адрес из внутренней части контейнера (или выяснить, где он работает), или
- найти его с внешней стороны (например, в Докер-композе), а затем передать его в контейнер при запуске? Может ли в этом случае помочь переменная окружения
DOCKER_HOST
? При запуске Docker Machine установлено значениеtcp://192.168.99.100:2376
- эта переменная также используется, когда не работает Docker Machine?
Я хотел бы избежать ситуации, когда люди должны указать IP-адрес вручную при запуске контейнера (или Docker Compose).
относительно вашего второго варианта, вы можете использовать [docker api] (https://docs.docker.com/engine/reference/api/docker_remote_api/) и получать информацию о своем контейнере! –
@ Mohsen89z Что бы вы запросили у докера, какой тип хоста вы используете? – Matt
Я думаю, что это будет трудно обойтись без ввода переменной среды во время выполнения с хоста, запускающего его. Вы могли бы создать сценарий для людей, чтобы запускать ваши контейнеры, которые собирают информацию для них. или попробуйте [jolokia] (https://jolokia.org), который подходит для запуска в докере. – Matt