Блог компанії 3v-Hosting
Як створити власний Docker образ
6 хв.
Створення власних Docker образів - це ефективний спосіб адаптації програмних середовищ і додатків для задоволення конкретних потреб. Docker як платформа контейнеризації дозволяє розробникам та системним адміністраторам створювати легкі, узгоджені та переносні середовища, які можуть запускати додатки з усіма їхніми залежностями. У цій статті ми розглянемо кроки, необхідні для створення власного Docker образу, обговоримо передовий досвід та дамо поради щодо оптимізації вашого Docker образу.
Що таке Docker образ
Docker образ по суті є знімком файлової системи, яка містить все необхідне для запуску програми: код, середовище виконання, бібліотеки, змінні середовища та конфігураційні файли. Образи Docker використовуються для створення контейнерів, які є ізольованими середовищами, які запускають екземпляри цих образів. Під час створення Docker образу ви берете існуючий базовий образ (наприклад, офіційний образ Ubuntu або Node.js) і налаштовуєте його, щоб увімкнути залежності вашої програми, налаштування середовища та конфігурації.
Навіщо створювати власний образ Docker?
Створення власного Docker образу дає кілька переваг, особливо під час управління кількома середовищами або розгортання програм на різних платформах. Користувальницький образ дозволяє:
- Включати лише необхідні залежності, зменшуючи розмір образу.
- Стандартизувати середовища розробки, тестування та виробництва.
- Зробити розгортання більш ефективним та послідовним.
- Оптимізувати продуктивність, настроюючи конфігурації спеціально для вашої програми.
Створення власного Docker образу також підвищує відтворюваність, оскільки кожен член команди може працювати з одним і тим самим середовищем, усуваючи проблему "це працює на моїй машині".
Кроки по створенню користувача Docker образу
1. Вибір базового образу
Створення образу проводиться шляхом написання певної інструкції, скрипта, яким буде створено майбутній образ. Цей скрипт пишеться у спеціалізованому файлі – Dockerfile. І першим кроком у створенні свого образа Docker є вибір базового образу. Docker надає широкий спектр офіційних образів, включаючи операційні системи (наприклад, Ubuntu, Alpine Linux) та середовища розробки (наприклад, Node.js, Python). Ви можете переглянути репозиторій Docker Hub, щоб знайти відповідний базовий образ для вашої програми.
Приклад:
FROM ubuntu:20.04
У цьому прикладі ми створюємо образ Docker на основі Ubuntu 20.04. Використання невеликого, ефективного базового образу – найкраща практика оптимізації образу Docker.
2. Створіть Dockerfile
Основа створення образу Docker - Dockerfile. Dockerfile - це текстовий файл, що містить ряд інструкцій, що визначають, як має бути створено образ Docker. Dockerfile повідомляє Docker, який базовий образ використовувати, які залежності встановлювати, як настроювати середовище та багато іншого. Кожна інструкція в Dockerfile є шаром в кінцевому образі Docker.
Ось простий Dockerfile, який створює власний образ для програми Node.js:
# Використовуйте офіційне середовище виконання Node.js як базовий образ
FROM node:14
# Встановіть робочий каталог у контейнері
WORKDIR /usr/src/app
# Скопіюйте package.json та встановіть залежності
COPY package*.json ./
RUN npm install
# Скопіюйте код програми
COPY. .
# Розкрийте порт програми
EXPOSE 8080
# Визначте команду для запуску програми
CMD ["node", "app.js"]
Цей приклад ілюструє, як використовувати інструкції Dockerfile для збирання та запуску образів Docker для Node.js. Дотримуючись цього підходу, ви можете налаштувати середовище відповідно до потреб вашої програми.
3. Складання образу Docker
Після того, як Dockerfile готовий, наступним кроком буде збирання образу Docker за допомогою команди docker build. Ця команда обробляє інструкції в Dockerfile та створює новий образ Docker на основі цих інструкцій.
docker build -t my-custom-node-app .
Прапор -t дозволяє позначити образ ім'ям, у разі "my-custom-node-app". Docker виконає кожен рядок у Dockerfile та створить відповідні шари.
4. Тестування образу Docker
Після складання образу Docker важливо протестувати його, запустивши як контейнер. Команда docker run дозволяє створити екземпляр контейнера з образу і перевірити, чи поводиться він так, як очікується.
docker run -p 8080:8080 my-custom-node-app
Ця команда запускає контейнер і зіставляє порт 8080 контейнера з портом 8080 на хост-машині, що дозволяє отримати доступ до програми, запущеної всередині контейнера.
Інші корисні статті у нашому Блозі:
- Як відкрити порт в UFW
- Як встановити Node.js на Ubuntu 22.04
- Pip: Основи керування пакетами в Python
- Що таке LVM і як налаштувати LVM в Ubuntu
Оптимізація Docker образу
При створенні образів Docker дуже важливо оптимізувати процес, щоб мінімізувати розмір образу і забезпечити більш швидке розгортання. Ось кілька рекомендацій щодо оптимізації образу Docker:
Використовуйте невеликі базові образи: Alpine Linux – це полегшений базовий образ, який може значно зменшити розмір кінцевого образу порівняно з більшими дистрибутивами, такими як Ubuntu.
Обмежте кількість шарів: кожна інструкція в Dockerfile створює новий шар у кінцевому образі. Щоб зменшити розмір зображення, поєднайте кілька інструкцій в один шар, де це доречно. Наприклад:
RUN apt-get update && apt-get install -y \
curl \
git
Очищення після інсталяції: видаліть тимчасові файли, кеш та залежні від інсталяції після встановлення, щоб образ залишався компактним.
RUN apt-get update && apt-get install -y curl && \
rm -rf /var/lib/apt/lists/*
Дотримуючись цих рекомендацій, ви зможете створювати ефективні, компактні образи Docker, які простіше розповсюджувати та розгортати.
Рекомендації щодо Dockerfile
Добре структурований Dockerfile може стати вирішальним чинником між ефективним чином і роздутим чи складним обслуговування. Ось кілька рекомендацій щодо Dockerfile:
Використовуйте багатоетапні складання: багатоетапні складання дозволяють відокремити середовище складання від кінцевого середовища виконання, зменшуючи розмір остаточного образу. Наприклад, ви можете використовувати один етап для складання програми, а інший - для створення середовища виконання лише з необхідними файлами.
Упорядкування інструкцій для кешування: Docker кешує результати кожної інструкції в Dockerfile. Упорядковуючи інструкції, які часто змінюються (наприклад, зміни коду) пізніше у файлі, можна скористатися кешуванням і скоротити час складання.
Використання .dockerignore: подібно до .gitignore, файл .dockerignore повідомляє Docker, які файли або каталоги слід виключити при складанні образу. Це запобігає включенню непотрібних файлів (наприклад журналів, тимчасових файлів) в остаточний образ.
Надсилання образу Docker до реєстру
Після того, як ви створили та протестували свій Docker образ, ви можете поділитися ним з іншими. Docker Hub та інші реєстри контейнерів дозволяють вам зберігати та розповсюджувати ваші образи.
Щоб надіслати образ до Docker Hub, виконайте такі кроки:
Позначте образ:
docker tag my-custom-node-app username/my-custom-node-app
Надішліть образ:
docker push username/my-custom-node-app
Надіславши образ до реєстру, ви можете легко поділитися ним з членами команди або розгорнути його на хмарних платформах, таких як AWS.
Висновок
Створення власного Docker образу надає гнучкий та потужний спосіб упаковки та розповсюдження додатків. Дотримуючись структурованого підходу до створення образу Docker — вибираючи відповідний базовий образ, написавши Dockerfile і слідуючи кращим практикам оптимізації, — ви можете створювати образи Docker, що відповідають вашим конкретним потребам. Правильне управління Docker образами має важливе значення для ефективної розробки, розгортання та масштабування програмного забезпечення у сучасних середовищах на основі контейнерів.