JavaRush /Курси /Модуль 2: Fullstack /Теги та версії образів

Теги та версії образів

Модуль 2: Fullstack
Рівень 13 , Лекція 7
Відкрита

8.1 Тегування в Docker

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

Тег (tag) в Docker — мітка, яка дозволяє ідентифікувати конкретну версію образу. Теги спрощують відстеження змін і допомагають обирати потрібні версії для різних середовищ, таких як розробка, тестування і продакшн.

Основні концепції тегів:

  1. Унікальність: тег однозначно ідентифікує конкретну версію образу.
  2. Версіонування: за допомогою тегів позначають версії образів, наприклад, v1.0, v2.0, latest.
  3. Гнучкість: теги використовуються для створення образів, що відповідають певним етапам розробки, наприклад, beta, stable, prod.

8.2 Як використовувати теги

1. Призначення тегів під час зборки образу

Ви можете присвоїти тег образу під час його зборки за допомогою параметру -t команди docker build.

Приклад:

У цьому прикладі образу призначається ім'я myapp і тег 1.0.

Terminal


docker build -t myapp:1.0 .

2. Призначення додаткових тегів існуючому образу

Ви можете додати теги вже існуючому образу за допомогою команди docker tag.

Приклад:

Цей приклад призначає образу myapp:1.0 додатковий тег latest.

Terminal


docker tag myapp:1.0 myapp:latest

3. Використання тегів під час запуску контейнерів

Коли ви запускаєте контейнер, ви можете вказати конкретний тег образу, який хочете використовувати.

Приклад:

Цей приклад запускає контейнер на основі образу myapp з тегом 1.0.

Terminal


docker run -d myapp:1.0

8.3 Практика тегування

Використання семантичного версіонування

Семантичне версіонування (Semantic Versioning) — це стандартна практика присвоєння версій, яка допомагає зрозуміти рівень змін в образі.

Формат семантичного версіонування:


<major>.<minor>.<patch>

Де:

  • major: Основні зміни, несумісні з попередніми версіями.
  • minor: Нові функції, сумісні з попередніми версіями.
  • patch: Виправлення помилок та інші незначні зміни.

Приклад:

Terminal


docker build -t myapp:2.1.3 .

Використання додаткових міток

Додаткові мітки допомагають позначити стан образу, наприклад, beta, alpha, stable або prod.

Приклад:

Terminal


docker build -t myapp:1.0-beta .
docker build -t myapp:1.0-stable .

Оновлення тегів

При оновленні образу рекомендується змінювати теги для зручності відстеження змін. Тег latest часто використовується для позначення останньої версії образу.

Приклад:

Terminal


docker build -t myapp:2.0 .
docker tag myapp:2.0 myapp:latest

8.4 Приклади використання тегів

Приклади використання тегів у різних середовищах:

Приклад 1: Розробка

Для розробки часто використовуються образи з тегами, що позначають поточну версію або стан розробки, наприклад, dev.

Terminal


docker build -t myapp:dev .
docker run -d myapp:dev

Приклад 2: Тестування

У тестових середовищах використовують образи з тегами, які позначають конкретні версії або стани, такі як beta.

Terminal


docker build -t myapp:1.1-beta .
docker run -d myapp:1.1-beta

Приклад 3: Продакшн

У продакшн-середовищах важливо використовувати стабільні та перевірені версії образів, позначені тегами stable, prod, або семантичними версіями, такими як 1.1.0-stable.

Terminal


docker build -t myapp:1.1.0-stable .
docker run -d myapp:1.1.0-stable

8.5 Кращі практики

1. Завжди використовуй семантичне версіонування

Дотримуйся семантичного версіонування для всіх образів. Це допомагає чітко розрізняти рівні змін і полегшує управління версіями.

2. Використовуй зрозумілі та осмислені теги

Використовуй теги, які чітко відображають стан або мету образу (наприклад, beta, stable, prod).

3. Уникай використання latest у продакшені

Тег latest може бути корисним для розробки і тестування, але у продакшені краще використовувати конкретні версії, щоб уникнути непередбачуваних змін.

4. Документуй використання тегів

Документуй, як і для чого використовуються теги у твоєму проекті. Це допоможе команді краще розуміти процес версіонування і зменшить ймовірність помилок.

Приклади Dockerfile з використанням тегів

Приклад 1: Створення та присвоєння тегів

Dockerfile

# Dockerfile для версії 1.0.0 
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]

Команди для збірки і тегування

Terminal


docker build -t myapp:1.0.0 .
docker tag myapp:1.0.0 myapp:stable

Приклад 2: Оновлення образу і тегування

Dockerfile

# Dockerfile для версії 1.1.0 з новою функцією
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN rm -rf /app/tests /app/docs
ENV NODE_ENV=production
EXPOSE 3000
CMD ["node", "app.js"]

Команди для збірки і тегування

Terminal

        
docker build -t myapp:1.1.0 .
docker tag myapp:1.1.0 myapp:latest
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ