Java и Docker. Часть 2 | OTUS
⚡ Подписка на курсы OTUS!
Интенсивная прокачка навыков для IT-специалистов!
Подробнее

Курсы

Программирование
Алгоритмы и структуры данных Team Lead Архитектура и шаблоны проектирования Разработчик IoT C# Developer. Professional PostgreSQL Разработчик на Spring Framework
-5%
Flutter Mobile Developer NoSQL iOS Developer. Basic
-10%
C++ Developer. Basic C++ Developer. Professional Android Developer. Professional Microservice Architecture Unity Game Developer. Professional Базы данных Node.js Developer React.js Developer Специализация Java-разработчик
-25%
Web-разработчик на Python Framework Laravel Cloud Solution Architecture Vue.js разработчик Интенсив «Оптимизация в Java» Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Супер-интенсив "Tarantool" PHP Developer. Basic
Инфраструктура
Мониторинг и логирование: Zabbix, Prometheus, ELK Administrator Linux. Professional Дизайн сетей ЦОД Разработчик IoT PostgreSQL Экспресс-курс "Версионирование и командная работа с помощью Git"
-30%
Microservice Architecture Highload Architect Специализация Administrator Linux
-25%
Network engineer Cloud Solution Architecture Внедрение и работа в DevSecOps Супер-практикум по работе с протоколом BGP Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes Супер-интенсив «СУБД в высоконагруженных системах» Супер-интенсив "Tarantool" Network engineer. Basic
Корпоративные курсы
Безопасность веб-приложений IT-Recruiter Дизайн сетей ЦОД Компьютерное зрение Разработчик IoT Вебинар CERTIPORT Machine Learning. Professional
-6%
NoSQL Пентест. Практика тестирования на проникновение Java QA Engineer. Базовый курс Руководитель поддержки пользователей в IT
-8%
SRE практики и инструменты Cloud Solution Architecture Внедрение и работа в DevSecOps Супер-практикум по работе с протоколом BGP Infrastructure as a code Супер-практикум по использованию и настройке GIT Промышленный ML на больших данных Экспресс-курс «CI/CD или Непрерывная поставка с Docker и Kubernetes» BPMN: Моделирование бизнес-процессов Основы Windows Server
Специализации Курсы в разработке Подготовительные курсы Подписка
+7 499 938-92-02

Java и Docker. Часть 2

Java_Deep_19.2_2-5020-1f5a5f.png

В первой части мы рассмотрели новые возможности работы Java-приложения в Docker-е. В этой части рассмотрим вопрос, как мониторить работающее в Docker-е Java-приложение.

Для мониторинга в Java-мире есть два очень популярных тула: VisualVM и jconsole. Давайте попробуем ими воспользоваться.

В Dockerfile пишем такую команду запуска:

CMD java -jar testJavaAppl.jar

Запускаем контейнер:

docker run java-docker

Запускаем jconsole. И видим, что jconsole не видит наше приложение в контейнере, хотя оно и запущено на этом же хосте. Дело понятное, Java-приложение работает в контейнере, который хорошо изолирует приложение от внешнего мира, поэтому jconsole его и не видит. Чтобы снаружи получить доступ к приложению в контейнере, надо запустить контейнер с «проброшенными» наружу портами. В нашем случае надо пробросить порт jmx, к которому будет подключаться jconsole. Но чтобы этот порт пробросить, его сначала надо открыть.

Меняем Dockerfile, пишем в нём такую команду:

CMD java -Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.port=1026
-Dcom.sun.management.jmxremote.local.only=false 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false 
-jar testJavaAppl.jar

Так мы говорим, что приложение будет слушать 1026 порт.

Стартуем контейнер с указанием порта:

docker run -p1026:1026 java-docker

Проверяем, что контейнер слушает порт.docker psВ разделе PORTS, видим:

0.0.0.0:1026->1026/tcp

Всё идёт по плану. Теперь запускаем jconsole. В списке локальных процессов нашего приложения нет. Подключаемся как к удалённому процессу:

localhost:1026

Jconsole успешно подключилась к приложению в контейнере. Теперь можно понаблюдать за его работой.

Если хотите узнать больше, смотрите наш открытый урок. На нём мы посмотрим на этот пример в комплексе и выясним некоторые другие нюансы.

Не пропустите новые полезные статьи!

Спасибо за подписку!

Мы отправили вам письмо для подтверждения вашего email.
С уважением, OTUS!

Автор
0 комментариев
Для комментирования необходимо авторизоваться