Docker: навіщо потрібен та як створити контейнер з java додатком

В останні роки ідеологія ІТ змістилася на користь контейнеризації. Щоб зрозуміти, що це таке, можна провести аналогію з реальним світом — розробники, як співробітники порту, упаковують програмне забезпечення в один контейнер, який згодом може «транспортуватися» на різні платформи та розпаковуватись у готовий додаток, який не залежить від операційної системи та інших встановлених програм.

Сьогодні одним із найбільш використовуваних інструментів контейнеризації є Docker (з’явився на ринку в 2008 році). Як правило, Docker використовується спільно з оркестраторами (Kubernetes, OpenShift), які допомагають більш гнучко і ефективно керувати великою кількістю мікропрограм.

Що таке Docker контейнер

Docker – це інструмент, який дозволяє упаковувати в контейнер програмне забезпечення, з усім його оточенням та залежностями, а потім доставляти його і запускати в потрібній системі. А вже запакований у контейнер додаток повністю ізолюється від операційної системи та сторонніх програм, завдяки чому розробники можуть не думати про те, в якому оточенні працюватиме проект.

Основні компоненти Docker:

  1. Docker Engine
    Технологія для створення та запуску контейнерів, яка складається з:
    • Docker Daemon (служба, яка керує контейнерами).
    • CLI (інтерфейс командного рядка для взаємодії з Docker).
  2. Образ (Image)
    Це шаблон контейнера, що містить операційну систему, середовище виконання, додаток і залежності. Образи є базою для створення контейнерів.
  3. Контейнер (Container)
    Запущений екземпляр образу, який працює ізольовано. Контейнери — це легкі та швидкі середовища для виконання додатків.
  4. Dockerfile
    Це файл сценарію, який описує кроки створення образу.
  5. Docker Hub
    Репозиторій, де можна знайти готові образи або завантажувати свої власні.

Встановлення Docker

Щоб почати роботу з Docker, потрібно встановити Docker Engine. Це можна зробити на Windows, macOS або Linux. Інструкції доступні на офіційному сайті docker.com.

Команди для перевірки встановлення:

  1. Перевірка версії Docker:bashdocker --version
  2. Перевірка, чи працює Docker:bashdocker info

Після встановлення та налаштування Docker, можна перейти до створення Docker-контейнера.


Створення Docker-контейнера для Java-додатку

1. Підготовка Java-додатку

У цьому прикладі ми створимо простий Java-додаток з використанням Spring Boot (або будь-якого іншого Java-фреймворку).

  1. Створіть Java-проєкт (наприклад, Spring Boot): Якщо у вас ще немає Java-додатку, генеруйте його за допомогою Spring Initializr.
    • Додайте залежності (наприклад, Spring Web).
  2. Зберіть проєкт у виконуваний JAR-файл: Якщо використовується Maven:bashmvn 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.

  1. Увійдіть у Docker Hub:bashdocker login
  2. Позначте ваш образ:bashdocker tag my-java-app your-dockerhub-username/my-java-app
  3. Завантажте образ:bashdocker push your-dockerhub-username/my-java-app

Після цього ваш образ буде доступний на Docker Hub.


Висновок

Docker — це потужний інструмент для контейнеризації додатків, який спрощує розгортання та масштабування Java-додатків. Використовуючи Docker, ви можете створювати незалежні та ізольовані середовища для виконання. Це ключовий інструмент для сучасної DevOps-культури, і опанування його основ сьогодні є важливим навичкою для будь-якого розробника або системного адміністратора.

Ми розглянули основи Docker, створили Dockerfile, побудували образ та запустили Java-додаток у контейнері. Цей підхід значно спрощує процес розгортання додатків, забезпечуючи стабільність і портативність.

  • javaadmin

    Супер крутий Dev

    Related Posts

    JBang: Як вивчати Java легко

    Java довгий час мала репутацію мови, яка потребує занадто багато «ритуалів»: створення структури каталогів, налаштування Maven або Gradle, написання довгих pom.xml лише для того, щоб протестувати одну ідею. JBang — це інструмент, який змінює правила гри, дозволяючи запускати Java-код так само легко, як скрипти на Python або Bash. Що таке JBang? JBang — це утиліта для командного рядка, яка дозволяє створювати, редагувати та запускати самодостатні Java-скрипти. Основна ідея…

    Налаштування Eureka Server

    Eureka Server — це сервіс відкриття (service discovery) від Netflix, який став стандартом де-факто в екосистемі Spring Cloud для мікросервісної архітектури. У цій статті ми детально розглянемо, як правильно налаштувати Eureka Server для вашого проєкту. Що таке Eureka і навіщо він потрібен? В мікросервісній архітектурі сервіси потребують механізму для виявлення один одного. Замість жорсткого кодування адрес, Eureka надає динамічний реєстр сервісів, де кожен мікросервіс реєструється при запуску та…

    Залишити відповідь

    Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

    Цікаве

    Dependency Injection у Spring: пояснюємо на пальцях

    • Автор javaadmin
    • 31 Липня, 2026
    • 15 views
    Dependency Injection у Spring: пояснюємо на пальцях

    Java Collections Framework: List, Set чи Map?

    • Автор javaadmin
    • 31 Липня, 2026
    • 29 views
    Java Collections Framework: List, Set чи Map?

    Оптимізуємо це: GraalVM Native Image, Leyden та CRaC

    • Автор javaadmin
    • 17 Липня, 2026
    • 57 views
    Оптимізуємо це: GraalVM Native Image, Leyden та CRaC

    JBang: Як вивчати Java легко

    • Автор javaadmin
    • 12 Травня, 2026
    • 131 views
    JBang: Як вивчати Java легко

    Agent Skills: Що це таке і чому про це варто знати

    • Автор javaadmin
    • 13 Квітня, 2026
    • 235 views
    Agent Skills: Що це таке і чому про це варто знати

    Dependency Injection в Java

    • Автор javaadmin
    • 9 Грудня, 2025
    • 407 views
    Dependency Injection в Java