1.1 Основи Docker Images
Docker Images (образи Docker) — це шаблони для контейнерів Docker. Вони містять усе необхідне для запуску застосунків: код, бібліотеки, залежності, інструменти та конфігураційні файли. Розуміння того, що таке Docker Images і як вони структуровані, важливе для ефективного використання Docker.
Docker Image — це незмінний шаблон, який використовується для створення контейнерів. Він містить усі необхідні компоненти для виконання застосунку в ізольованому середовищі. Коли ти запускаєш контейнер, Docker створює екземпляр образу і запускає його.
Ключові характеристики Docker Images:
- Незмінність: образи Docker незмінні. Будь-які зміни в контейнері не впливають на початковий образ. Для зміни вмісту образу потрібно створити новий образ.
- Шарова структура: Docker Images складаються з кількох шарів. Кожен шар представляє зміну в порівнянні з попереднім. Це дозволяє ефективно використовувати простір за рахунок повторного використання шарів.
- Ідентифікація: кожний образ має унікальний ідентифікатор (SHA256-хеш), а також може мати один або кілька тегів, які спрощують керування версіями образів.
Структура Docker Images:
Docker Images мають шарову структуру, де кожен шар є файловою системою. Ці шари зберігаються в кеші Docker і можуть повторно використовуватись іншими образами. Шарова структура робить образи Docker легковаговими та ефективними. Наприклад, першим шаром йде операційна система, другим — Python, третім — твій застосунок.
Основні компоненти структури Docker Images:
- Базовий шар (Base Layer): початковий шар образу, який часто використовується як основа для створення інших образів. Наприклад, це може бути мінімальна версія операційної системи, такої як Ubuntu чи Alpine Linux.
- Проміжні шари (Intermediate Layers): ці шари створюються на основі команд, виконаних у Dockerfile (наприклад, встановлення пакетів, копіювання файлів і т.д.). Кожен шар додає зміни до попереднього.
- Фінальний шар (Final Layer): останній шар, створений на основі інструкцій CMD, ENTRYPOINT або змін всередині контейнера, називається "контейнерним" шаром. Цей шар є тимчасовим і існує лише під час роботи контейнера.
1.2 Як працюють шари Docker Images
Кожен шар образу Docker представляє собою набір змін у порівнянні з попереднім шаром. Коли Docker створює образ, він виконує кожну інструкцію з Dockerfile і додає новий шар для кожної зміни.
Приклад створення шарів:
- Базовий образ: почнемо з базового образу, наприклад,
ubuntu:20.04. Це буде перший шар. - Встановлення пакетів: команда
RUN apt-get update && apt-get install -y python3створить новий шар з встановленим Python. - Копіювання файлів: команда
COPY . /appдодасть файли додатку в новий шар. - Встановлення робочої директорії: команда
WORKDIR /appстворить шар, який встановить робочу директорію для наступних команд.
Переваги використання шарів:
- Повторне використання: шари можуть повторно використовуватись іншими образами. Наприклад, якщо два образи використовують один і той самий базовий шар, Docker завантажить його лише один раз, заощаджуючи простір і час.
- Кешування: Docker кешує шари, що пришвидшує процес складання образів. Якщо шар не змінився, Docker використовує його з кешу замість перескладання.
- Модульність: шарова структура дозволяє розробляти образи модульно. Ви можете оновлювати чи змінювати окремі шари, не зачіпаючи весь образ.
Ідентифікація та теги Docker Images:
Кожен Docker Image ідентифікується за допомогою унікального хеша (SHA256), який генерується на основі вмісту образу та всіх його шарів. Для зручності управління та версіонування Docker Images також можуть мати теги.
Приклад ідентифікації образу:
Наступна команда покаже список усіх образів на вашій системі, включаючи їх репозиторій, теги, ідентифікатори та розміри:
docker images
1.3 Робота з Docker Images
Docker надає безліч команд для роботи з образами. Ось основні з них:
- Створення образу:
docker build - Запуск контейнера з образу:
docker run - Список образів:
docker images - Видалення образу:
docker rmi - Пошук образів в Docker Hub:
docker search - Завантаження образу з Docker Hub:
docker pull - Відправка образу в Docker Hub:
docker push
Приклад створення та використання Docker Image:
1. Створення Dockerfile:
# Використовуємо базовий образ Ubuntu
FROM ubuntu:20.04
# Встановлюємо Python
RUN apt-get update && apt-get install -y python3
# Копіюємо файли додатку в контейнер
COPY . /app
# Встановлюємо робочу директорію
WORKDIR /app
# Вказуємо команду для запуску додатку
CMD ["python3", "app.py"]
2. Збірка образу:
Наступна команда створить образ з ім'ям my_python_app, використовуючи Dockerfile з поточного каталогу:
docker build -t my_python_app .
3. Запуск контейнера з образу:
Використовуйте наступну команду, щоб запустити контейнер із створеного образу my_python_app у фоновому режимі:
docker run -d my_python_app
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ