Docker бест практіс

Усі статті, обговорення, новини про DevOps — в одному місці. Підписуйтеся на DOU | DevOps!

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

1. Почніть з Офіційних Образів:

Використовуйте офіційні образи як базу. Наприклад, якщо ви працюєте з Node.js, почніть з node:14-alpine.

2. Оптимізуйте ваш Dockerfile:

Мінімізуйте розмір образу, з’єднуючи команди разом:

3. Використовуйте .dockerignore:

Створіть файл .dockerignore, щоб виключити зайві файли під час збирання образу.

4. Multi-Stage зборки:

Для образів, які призначені для продакшну, використовуйте Multi-Stage збирання для зменшення розміру образу.

5. Змінні середовища:

Використовуйте змінні середовища для конфігурацій, наприклад, для Node.js.

6. Перевірка стану роботи:

Додайте конфігурацію для перевірки стану вашого додатку.

7. Обмеження ресурсів:

Визначте обмеження ресурсів у вашому файлі Docker-Compose.

8. Логування та моніторинг:

Використовуйте інструменти, такі як Docker logs, стек ELK або Prometheus для комплексного логування та моніторингу. Також, щоб уникнути ситуацій за переповненим диском не забувайте лімітувати розмір логів.

9. Реєстри контейнерів:

Завантажуйте ваші власні образи до приватного реєстру.

10. Версіоновані образи:

Тегуйте свої образи для версіонування.

Ці «бест практіс» допоможуть вам створювати ефективні, безпечні та зручні у використанні контейнери Docker, поліпшуючи ваші робочі процеси з розробки та розгортання.

Переклад сатті: dev.to/...​ocker-best-practices-55j0

З повагою Євген Кошманов,

СЕО школа ДевОпс

dosvit.com.ua

👍ПодобаєтьсяСподобалось6
До обраногоВ обраному5
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Євген, у вас на сайті проблеми з сертифікатом, браузер лається, каже що з"єднанню не можна довіряти.

Я б ще додав такий пункт як аналіз образу за допомогою утіліти Dive (github.com/wagoodman/dive) Нещодавно її знайшов та зміг значно зменшити кінцевий розмір багатьох образів в компанії. Допомогає подивитись кожен прошарок образу, які файли були додані, або видалені. Також, її можно запускати автоматично в CI. Рекомендую.

Не знаю як назвати такий пост, але це точно не «Docker бест практіс», тому що дуже багато понять не пояснюється або просто помилкові.
Наприклад:

Використовуйте офіційні образи як базу. Наприклад, якщо ви працюєте з Node.js, почніть з node:14-alpine.

Добре, якщо я пишу на Java? Офіційно Java розробляється компанією Oracle, але вона забороняє використовувати JDK в Docker images. Є open-source images від OpenJDK, але вони вже кілька років не підтримуються.
Таким чином, мені потрібно вибирати між images від Eclipse Temurin, Amazon Corretto, Liberica і т.д. Де тут «офіційні»?

Мінімізуйте розмір образу, з’єднуючи команди разом:

Дивно, але в наведеному прикладі якраз 6 інструкцій і жодного об’єднання там немає.

Визначте обмеження ресурсів у вашому файлі Docker-Compose.

У цьому прикладі використовується атрибут deploy, але автор «забув» вказати, що він застосовується тільки якщо ви розміщуєте контейнери в Docker Swarm. Тобто, якщо просто запустити через docker compose up, то все це проігнорується.

автор «забув» вказати, що він застосовується тільки якщо ви розміщуєте контейнери в Docker Swarm

Не знаю как давно, но работает в compose без проблем. Там раньше был другой формат кажется. С версии 3 поменялось, и restart теперь тоже в deploy.

Невже така стаття зараховється як залікова?

А де про distroless?

Тегуйте свої образи для версіонування.

І при цьому не використовуйте latest у якості посилання на образ ;-)

А що саме тут цінного? Я від Докеру дуже далекий, лиш пару разів його собі налаштовув, і то бачу що це який набір баззвордів, а не «цінний» матеріал. Я чогось не розумію?

Ну, таке. Стаття з одного боку для джунів, з іншого боку це а ні підручник, ані інтро у докер.

Та отож що джуни половину пунктів можуть навіть не зрозуміти :) Чому і не бачу сенсу цього всього. Нагадує індусів на Medium, що створюють пости, котрі несуть настільки мало сенсу, або ж навіть якусь діч втирають, що аж тригерить, бо для джунів це може бути «істиною», адже «це ж запощено на Medium / Dev.to / DOU»...

В целом это все база. Но как пример: никто (или очень редко) не настраивает логирование в docker compose. В итоге потом место на диске тютю.

Підписатись на коментарі