6 рекомендаций по использованию контейнеров

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


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

Использовать стабильное базовое изображение

Благодаря Docker, создание изображений контейнера никогда не было проще.

Укажите свой базовый образ, добавьте свои изменения и создайте свой контейнер. Хотя это отлично подходит для начала работы, использование базовых образов по умолчанию может привести к большим изображениям, полным уязвимостей в безопасности. Кроме того, избегайте использования «док-станции» образа тега «Последний», поскольку существует большая вероятность появления ошибки.

Debian или Ubuntu используются в качестве базового образа большинством образов Docker. Они очень полезны с точки зрения совместимости и простоты загрузки, но эти базовые образы могут добавить сотни мегабайт дополнительных накладных расходов на ваш контейнер..

Например, простые приложения Node.js и Go, «привет мир», составляют около 700 мегабайт. Размер вашего приложения составляет всего несколько мегабайт. Таким образом, все эти дополнительные издержки – это потраченное впустую пространство и отличное укрытие для уязвимостей и ошибок безопасности..

Если у вашего языка программирования или стека нет опции для небольшого базового образа, вы можете собрать свой контейнер, используя raw Alpine Linux в качестве отправной точки. Это также дает вам полный контроль над тем, что происходит внутри ваших контейнеров.

Делайте изображения контейнеров меньше

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

Скорее всего, ваш язык или стек, который вы используете, обеспечивает официальное изображение, которое намного меньше, чем изображение по умолчанию. Например, давайте посмотрим на контейнер Node.js. Переход от узла по умолчанию: последний к узлу: 14-alpine уменьшает наш базовый размер изображения почти в десять раз.

Последний тэг nodejs - geekflare

по сравнению с ….

альпийский тег nodejs - geekflare

В новом файле Docker контейнер начинается с узла: alpine image, создает каталог для кода, устанавливает зависимости с помощью NPM и, наконец, запускает сервер Node.js. С этим обновлением результирующий контейнер почти в десять раз меньше.

Вы создаете контейнер еще легче, используя шаблон строителя. В интерпретирующих языках исходный код отправляется интерпретатору, а затем выполняется напрямую. Но скомпилированный язык, исходный код заранее превращается в скомпилированный код.

Теперь для языков компиляции на этапе компиляции часто требуются инструменты, которые не нужны для запуска кода. Это означает, что вы можете полностью удалить эти инструменты из окончательного контейнера. Для этого вы можете использовать шаблон Builder. Первый контейнер создает код, а затем скомпилированный код упаковывается в окончательный контейнер без всех компиляторов и инструментов, необходимых для создания скомпилированного кода..

Использование небольших базовых образов и шаблона компоновщика – это отличные способы создания контейнеров меньшего размера без особой работы..

Пометьте свои изображения контейнера

Маркировка Docker является исключительно мощным инструментом для нас, когда дело доходит до управления нашими изображениями. Это помогает в управлении различными версиями образа докера. Ниже приведен пример построения образа докера с именем тега v1.0.1

сборка докера -t geekflare / ubuntu: v1.0.1

Теперь используются два типа тегов: стабильный теги уникальный теги.

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

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

Кроме того, в качестве хорошей практики следует заблокировать развернутые теги изображений, задав для параметра write-enable значение false. Это помогает избежать ошибочного удаления развернутого образа из реестра..

Контейнерная безопасность

Ниже приведены основные моменты для обеспечения безопасности контейнера.

  • Проверьте подлинность любого программного обеспечения, которое вы устанавливаете в свой контейнер
  • Используйте подписанные изображения докера или изображения с правильной контрольной суммой.
  • Убедитесь, что URL использует HTTPS, если вы используете сторонний репозиторий.
  • Включите правильные ключи GPG перед использованием менеджера пакетов для обновления пакетов
  • Никогда не запускайте свои приложения как root. Вы всегда должны использовать директиву user внутри dockerfile, чтобы убедиться, что вы отбрасываете привилегии своего пользователя..
  • Не запускайте SSH внутри вашего контейнера.
  • Сделать файловую систему доступной только для чтения.
  • Используйте пространства имен, чтобы разделить ваш кластер.

Центр безопасности Интернета (CIS) предоставил тест Docker для оценки безопасности док-контейнера. Они предоставили скрипт с открытым исходным кодом под названием Докерская скамья для безопасности, который вы можете запустить, чтобы проверить, насколько безопасен Docker-контейнер.

Одно приложение на контейнер

Виртуальные машины довольно хороши в параллельном запуске нескольких вещей, но когда дело доходит до контейнеров, вы должны запускать одно приложение внутри одного контейнера. Например, если вы запускаете приложение MEAN в контейнеризованной среде, оно должно иметь один контейнер для MongoDB, один контейнер для Express.js, один контейнер для Angular и один контейнер для Node.js..

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

одно приложение один контейнер - geekflare

Контейнеры имеют жизненный цикл, аналогичный тому, который они запускают. Когда контейнер запустится, приложение запустится. Когда контейнер останавливается, приложение также останавливается.

Запустите контейнеры без сохранения состояния

Контейнеры в основном предназначены для хранения без сохранения состояния. В этом случае постоянные данные, которые содержат информацию о состоянии контейнера, хранятся вне контейнера. Файлы могут храниться в хранилище объектов, таком как облачное хранилище, для хранения информации о сеансе пользователя вы можете использовать базу данных с низкой задержкой, такую ​​как Redis, а также можете подключить внешний диск для хранения на уровне блоков..

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

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

Вывод

Выше приведены некоторые из наиболее важных методов, которым необходимо следовать при работе с контейнерами, если вы создаете среду Docker Production, а затем узнайте, как ее защитить..

TAGS:

  • докер

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map