Рубрики
Без рубрики

Я ЧУВ, ЧУВ, Выберите Вам контейнеровоз. Часть 1.

Руководство по выбору правильного базового контейнера. Помечено с докером, начинающим, Python, Go.

Я ЧУВ, ЧУВ, ВЫБРАТЬ ВАМ КОНТАКТЕР ИЗОБРАЖЕНИЕ (3 Часть серии)

Когда я впервые начал свое путешествие в использовании Docker и Kubernetes, один из проблем, которые я ударил, было «каким базовым изображением я использую для моих приложений? «Там так много вариантов. Например, я люблю Debian, это то, что я бегу на моем ноутбуке, так что я выбираю Debian, потому что это то, что я знаю? Это, кажется, довольно прямо вперед, чтобы принять это решение, но, как и со всем в жизни с вариантами, мы делаем, есть последствия. Как разработчик, вы хотите быть вооруженным лучшим знанием, почему вы сделали базовый выбор изображения. Не только для ваших приложений производительности или размера изображения развертывания, но и такие вещи, как безопасность.

Я собираюсь разрушить наши приложения на две разные группы, составленные языки, такие как Go или Rust. Другие динамические языки, такие как Python, Ruby или Node.js. В этой серии я собираюсь использовать два примера Go приложение в части 2 и приложение Python в части 3.

Но давайте посмотрим на варианты, которые у нас есть для базового изображения. У нас есть четыре варианта полного изображения ОС, как Debian, есть также тонкие версии полных ОС, следующие – альпийская и последняя, но не менее важная царапина.

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

Начнем с полной ОС, они самые простые, чтобы начать и, скорее всего, самый простой способ получить ваше приложение вверх и работать, когда они содержат большинство пакетов, установленных по умолчанию. В части 1 серии мы просто собираемся сравнивать изображения и еще не беспокоиться о приложении. Одна вещь, которая выделяется прямо в том, чтобы изображения полной ОС – они отправляются с уязвимыми пакетами из коробки. Теперь это могут не показывать для вас пробки, у вас может быть смягчение рисков на месте для использования этих изображений. Информация о состоянии изображения свободно доступна на Dockerhub под информацией о тегах. Ниже приведен пример.

Как вы можете видеть, что есть несколько критических уязвимостей, которые развернуты, прежде чем добавить свой код. Теперь давайте перейдем на наши тонкие изображения. Как он стоит сейчас, у Debian есть тонкий образ, но что такое тонкое изображение? Это срезанная версия полного образа с только что базовые пакеты ожидаются, что вы устанавливаете какие-либо пакеты, которые вам нужны для вашего приложения. Используя тонкое изображение, которое вы можете сэкономить около 50% на вашем размере изображения, например, полное изображение ОС будет около 100 МБ, а Slim составляет около 54 МБ.

Как вы можете видеть, от вашего изображения охранной проверки, мы сократили уязвимые пакеты. К сожалению, все еще есть две критические пакеты. Далее мы перейдем к Alpine Linux Отказ Эта ОС была построена с того, чтобы быть контейнером нативной ОС. Основное изменение этой ОС к традиционному изображению ОС (FAT или SLIM) является Alpine, не использует Glibc вместо этого использует Musl Libc. . Это важно знать, зависит ли ваше приложение от Glibc. Alpine Linux по умолчанию по умолчанию поставляется только на базовых пакетах, что вашему приложению необходимо установить. На истечении альпий находится чуть ниже 6 МБ для изображения.

Как вы можете видеть из нашего сканирования уязвимостей, в этом изображении нет критических уязвимостей. Alpine может быть немного сложным, чтобы сначала привыкнуть, поскольку у него есть собственный менеджер пакетов, который вам нужно учиться. Если вы сохранитесь с этим, я думаю, что преимущества будут стоить вашего времени. Наконец, мы посмотрим на царапину. Что такое царапина? Царапина – начальная точка для всех изображений контейнера. Используя сигналы царапин «Image» в процесс сборки, который вы хотите, чтобы следующая команда в DockerFile – первым слоем файловой системы на вашем изображении. Таким образом, нет менеджеров по пакетам или пакетам. Это просто пустая слоистая файловая система. Вы можете вытащить царапину, так как это зарезервированное пространство имен. Также не будет никаких уязвимых пакетов, поскольку по умолчанию нет пакетов.

FROM scratch
ADD rootfs.tar.xz /
CMD ["bash"]

Выше приведен пример полной ОС-изображений Dockerfile, как вы можете все начать с нуля.

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

Если вы хотели бы узнать больше о контейнерах или голосе кубернанов до моего Страница GitHub для открытого семинара.

Я ЧУВ, ЧУВ, ВЫБРАТЬ ВАМ КОНТАКТЕР ИЗОБРАЖЕНИЕ (3 Часть серии)

Оригинал: “https://dev.to/scottyc/i-cho-cho-chose-you-container-image-part-1-227p”