В останні роки ідеологія ІТ змістилася на користь контейнеризації. Щоб зрозуміти, що це таке, можна провести аналогію з реальним світом — розробники, як співробітники порту, упаковують програмне забезпечення в один контейнер, який згодом може «транспортуватися» на різні платформи та розпаковуватись у готовий додаток, який не залежить від операційної системи та інших встановлених програм.
Сьогодні одним із найбільш використовуваних інструментів контейнеризації є Docker (з’явився на ринку в 2008 році). Як правило, Docker використовується спільно з оркестраторами (Kubernetes, OpenShift), які допомагають більш гнучко і ефективно керувати великою кількістю мікропрограм.
Що таке Docker контейнер
Docker – це інструмент, який дозволяє упаковувати в контейнер програмне забезпечення, з усім його оточенням та залежностями, а потім доставляти його і запускати в потрібній системі. А вже запакований у контейнер додаток повністю ізолюється від операційної системи та сторонніх програм, завдяки чому розробники можуть не думати про те, в якому оточенні працюватиме проект.
Основні компоненти Docker:
- Docker Engine
Технологія для створення та запуску контейнерів, яка складається з:- Docker Daemon (служба, яка керує контейнерами).
- CLI (інтерфейс командного рядка для взаємодії з Docker).
- Образ (Image)
Це шаблон контейнера, що містить операційну систему, середовище виконання, додаток і залежності. Образи є базою для створення контейнерів. - Контейнер (Container)
Запущений екземпляр образу, який працює ізольовано. Контейнери — це легкі та швидкі середовища для виконання додатків. - Dockerfile
Це файл сценарію, який описує кроки створення образу. - Docker Hub
Репозиторій, де можна знайти готові образи або завантажувати свої власні.
Встановлення Docker
Щоб почати роботу з Docker, потрібно встановити Docker Engine. Це можна зробити на Windows, macOS або Linux. Інструкції доступні на офіційному сайті docker.com.
Команди для перевірки встановлення:
- Перевірка версії Docker:bash
docker --version - Перевірка, чи працює Docker:bash
docker info
Після встановлення та налаштування Docker, можна перейти до створення Docker-контейнера.
Створення Docker-контейнера для Java-додатку
1. Підготовка Java-додатку
У цьому прикладі ми створимо простий Java-додаток з використанням Spring Boot (або будь-якого іншого Java-фреймворку).
- Створіть Java-проєкт (наприклад, Spring Boot): Якщо у вас ще немає Java-додатку, генеруйте його за допомогою Spring Initializr.
- Додайте залежності (наприклад, Spring Web).
- Зберіть проєкт у виконуваний JAR-файл: Якщо використовується Maven:bash
mvn clean packageЯкщо Gradle:bashgradle buildУ результаті в папціtarget/(для Maven) абоbuild/libs/(для Gradle) з’явиться файл вашого додатку (наприклад,myapp.jar).
2. Створення Dockerfile
Dockerfile — це файл конфігурації, у якому описані всі кроки для створення Docker-образу. У цьому файлі ми вкажемо:
- Вибір базового образу.
- Копіювання JAR-файлу у контейнер.
- Команду для запуску Java-додатку.
Приклад Dockerfile для Java-додатку:
dockerfile# Вкажіть базовий Docker-образ з JDK
FROM openjdk:17-jdk-slim
# Встановіть робочу директорію у контейнері
WORKDIR /app
# Скопіюйте JAR-файл у контейнер
COPY target/myapp.jar /app/myapp.jar
# Визначте порт, який використовує додаток
EXPOSE 8080
# Вкажіть команду для запуску додатку
CMD ["java", "-jar", "myapp.jar"]
Коментарі до Dockerfile:
FROMвизначає базовий образ (у цьому випадку OpenJDK 17).WORKDIRвстановлює робочу директорію в контейнері.COPYкопіює локальний файл у контейнер.EXPOSEвідкриває порт 8080 для доступу до додатка.CMDзадає команду, яка виконується під час запуску контейнера.
3. Збірка Docker-образу
Після створення Dockerfile, зберіть Docker-образ за допомогою команди:
bashdocker build -t my-java-app .
Ця команда:
- Збирає Docker-образ з
Dockerfileу поточній директорії. - Називає образ
my-java-app.
Після збірки ви можете перевірити, чи образ створений, за допомогою команди:
bashdocker images
4. Запуск Docker-контейнера
Після створення образу можна запустити контейнер:
bashdocker run -d -p 8080:8080 my-java-app
-dзапускає контейнер у фоновому режимі.-p 8080:8080перенаправляє порт 8080 контейнера на локальний порт 8080.
Тепер додаток доступний за адресою: http://localhost:8080.
5. Перевірка контейнера
Щоб перевірити, чи контейнер працює, скористайтеся командою:
bashdocker ps
Ця команда покаже запущені контейнери, їхні ідентифікатори та порти.
6. Завантаження образу на Docker Hub (опціонально)
Якщо ви хочете поділитися своїм Docker-образом або використовувати його на інших серверах, завантажте його на Docker Hub.
- Увійдіть у Docker Hub:bash
docker login - Позначте ваш образ:bash
docker tag my-java-app your-dockerhub-username/my-java-app - Завантажте образ:bash
docker push your-dockerhub-username/my-java-app
Після цього ваш образ буде доступний на Docker Hub.
Висновок
Docker — це потужний інструмент для контейнеризації додатків, який спрощує розгортання та масштабування Java-додатків. Використовуючи Docker, ви можете створювати незалежні та ізольовані середовища для виконання. Це ключовий інструмент для сучасної DevOps-культури, і опанування його основ сьогодні є важливим навичкою для будь-якого розробника або системного адміністратора.
Ми розглянули основи Docker, створили Dockerfile, побудували образ та запустили Java-додаток у контейнері. Цей підхід значно спрощує процес розгортання додатків, забезпечуючи стабільність і портативність.






