PIG DATA

Лучшие практики по использованию Docker для PROD

Лучшие практики по использованию Docker для PROD

Зачем нужно использовать данные практики? 🤷‍♀️

✅ Безопасность вашего проекта;

✅ Оптимальные размеры ваших image;

✅ Узнаете о полезных фичах Docker;

✅ Меньше непонятного кода в вашем Dockerfile;

1. Берем только официальный образ Docker в качестве основы для приложения

Как пример, вы пишите на Node.js свое приложение и вам нужно собрать и запустить его в Docker.

Берем официальный образ node

Лучшие практики по использованию Docker для PROD

Что это нам даст?

  • Меньше мусора в dockerfile
  • image, который оптимизирован под Node.js

2. Версионность вашего Docker image

Мы взяли image, Теперь нам нужно указать версию, так как по умолчанию берется latest версия.

Зачем, это делать?

❌ - Можно получить версию которая будет отличатся от предыдущей сборки или сборки на DEV площадках

❌ - В более новой версии могут быть проблемы или она может не собраться

❌ - latest говорит, что он тестовый и не гарантирует стабильную работу

Как вы поняли, нам стоит указать конкретную версию.

3. Берем только самые маленькие размеры образов

В Node.js имеется довольно большое количество image.В которых идет не только версионность, но и большой список систем:

1) Размер образа

❌При использовании полноценного дистрибутива, к примеру Centos, в комплекте вы получите много дополнительных компонентов, которые будут использовать место и вряд-ли вы будете ими пользоваться.

✅ Лучше, использовать урезанную версию дистрибутива и доустановить нужные вам компоненты, вы получите меньший размер образа и вам понадобится меньше пространства для хранения и времени для разворачивания среды.

2) Безопасность

❌ Чем больше компонентов системы, тем выше вероятность наличия уязвимости в вашем образе.🙉

✅ Как показывает практика чем меньше в дистрибутив входит компонентов, тем ниже шанс взлома вашей среды и доступа к вашему проекту.

4. Кэширование во время билдов своих образов

1) Что такое слои?

Образы Docker создается на основе Dockerfile.

Dockerfile каждая его команда иди инструкция прописанная внутри создает "слой":

2) А что с кешированием?

Все слои будут загонятся в кэш Docker'ом. 👍

Из-за этого при отсутствии правок Docker использует кэш для создания image.

Преимущества кэширования слоев:

✅ - Быстрое создание слоев

3) Кэширование и его оптимизация

Что нужно знать:

После правок в слое, всё нужно пересоздавать заново: Изменили что-то в Dockerfile, Кеш всех следующих слоев будет пересоздан так как считается устарелым. 😣

Соберите список всех команд в Dockerfile от мало использованной и до той которую используете постоянно, так вы сможете правильно использовать свой кэш и оптимизируете скорость создания своего образа 🚀

5. Пользуйтесь файлом .dockerignore

Туда можно добавить такие папки как target и build файл readme они вам не нужны и генерировать их постоянно вам точно не нужно. 🤔

👉 Используем.dockerignore.

Все что находится внутри файла, игнорируется при создании, вам нужно только перечислить каталоги и файлы.

6. Пользуемся Multi-Stage

Есть набор инструментов которые нужно только для разработки и тестирования вашего проекта, в PROD оно не нужно.

Такие инструменты как правило имеют больше уязвимостей и увеличивают вес вашего проекта🧐

Исключает все лишнее, для этого нужно использовать multi-stage builds 💡он позволит использовать несколько временных образов во время процесса сборки, но оставит только финальную версию образа для PROD среды:

7. Используем пользователя с наименьшими правами которые возможны

Дефолтный юзер для Dockerfile root 🙉 это нам точно не подходит и нам нужно что-то делать с данной проблемой.

❌ Вы же знаете, что это не капли не безопасно.

Если кто-то получит доступ к root вы можете потерять доступ к железу и весь ваш проект смогут слить и получить полный доступ к базе  🤯 всегда есть вероятность использования библиотеки с уязвимостью.

✅ Создаем юзера, который имеет права в конкретную директорию и права на определенные приложения и выделенную группу в образе Docker для для запуска вашего проекта:

8. Проверяем свои image на наличие дыр в системе безопасности

как же нам убедится что дыр в безопасности нету? 🧐

Используем команду для проверки безопасности docker scan. 🔍

В фоне Docker использует сервис snyk для проверки образов на уязвимости.

Как пример output'a 


656 просмотров

0 комментариев
Последние

Натисніть на зображення, щоб оновити код, якщо він нерозбірливий
Комментариев пока нет
PIG DATA
Community о Хрюшах, событиях, технологиях и IT. Создан для людей и маленьких Хрюшек.