Что такое контейнерный Linux и стоит ли его использовать?
Linux

Что такое контейнерный Linux и стоит ли его использовать?

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

Операционные системы Linux бывают разных видов. В то время как операционные системы Linux, такие как Ubuntu, являются достаточно общими, другие системы нацелены на определенную нишу. Есть Kali Linux, ориентированный на безопасность. Легкие дистрибутивы, такие как Xubuntu, и даже Hannah Montana Linux(!). Для настольного использования ванильная операционная система Linux работает хорошо. Однако для специализированных задач, таких как запуск сервера, лучше найти специализированную версию

Контейнеры становятся все более популярными.Container Linux, ранее известная как CoreOS, – это операционная система Linux, разработанная для простых контейнерных развертываний. Это одна из самых новых нишевых операционных систем Linux. Посмотрите этот обзор и практический взгляд на Container Linux

Практическая работа с Container Linux: Общие сведения

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

Чаще всего Container Linux устанавливается в кластерных средах. Дистрибутив, ранее известный как CoreOS, даже включает средства для создания кластера из одной машины. Однако определяющей особенностью Container Linux является его зависимость от контейнеров

В отличие от традиционной настольной операционной системы, все приложения запускаются в контейнерах. Хотя и виртуальные машины (VM), и контейнеры используют методы виртуализации, контейнеры отличаются. В отличие от виртуальных машин, контейнеры используют то же ядро операционной системы, что и главная машина. Поскольку контейнеризированные приложения и главная машина используют одно и то же ядро, развертывание контейнеров отличается повышенной эффективностью. В конфигурации виртуальной машины каждая ВМ запускает приложение плюс гостевую операционную систему. Она работает поверх операционной системы и аппаратного обеспечения хоста

Контейнерные развертывания вместо этого запускают приложения в собственных контейнерах поверх программного обеспечения для виртуализации.Docker остается самым популярным программным обеспечением для контейнеров, хотя chroot, LXC и Linux-VServer входят в число альтернатив Docker

Hands-On With Container Linux: Зачем использовать контейнеры?

Итак, контейнеры – это метод виртуализации. Почему стоит выбрать контейнерную среду? Как правило, контейнеры обеспечивают повышенную производительность. Отказ от отдельных операционных систем и использование общего ядра позволяет максимально повысить эффективность использования процессора, хранилища и памяти

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

Agile-разработка сосредоточена на итерациях и учете непредсказуемости. Вы можете прочитать ‘Манифест Agile’ для более подробного ознакомления с философией agile. Однако, несмотря на все преимущества контейнеров, они не являются идеальным методом виртуализации. Поскольку контейнеры используют ядро операционной системы хоста, возникает риск безопасности. Любая уязвимость или брешь, затрагивающая контейнер, получает доступ к операционной системе. Однако существует обходной путь – запуск контейнерных приложений на операционной системе внутри виртуальной машины. Это гарантирует, что операционная система хост-машины изолирована от единственной операционной системы хост-контейнера

Контейнеризация также требует, чтобы контейнеры использовали одну и ту же операционную систему. В виртуальных машинах каждое приложение получает свою собственную операционную систему. Поэтому вы не можете запускать приложения, разработанные для Windows Server, в контейнерной среде Linux и наоборот

Практическая работа с Container Linux: Что такое Container Linux?

CoreOS, или Container Linux, как его сейчас называют, – это операционная система Linux с открытым исходным кодом. Это легкий дистрибутив, предназначенный для кластерных развертываний. Точнее, CoreOS концентрируется на простых, надежных, масштабируемых развертываниях. Вы не найдете менеджера пакетов. Вместо этого Container Linux требует, чтобы все приложения запускались внутри контейнеров.Container Linux использует Chrome OS в качестве своей основы. Поэтому Container Linux остается довольно легковесным. Для тестирования я запустил операционную систему Linux, ранее известную как CoreOS, в виртуальной машине на устаревшем ноутбуке HP Envy m6-1205dx с процессором AMD A10. Потребление системных ресурсов оставалось довольно низким

Поскольку Container Linux отказывается от некоторых традиционных функций настольной операционной системы Linux, это позволяет сохранить легкий вес дистрибутива. В отличие от настольной операционной системы, вы не найдете менеджера пакетов. Вместо этого все приложения запускаются как контейнеры Docker. Это обеспечивает переносимость и изоляцию сервисов. Если вам нужна среда рабочего стола, вам не повезло. В Container Linux отсутствует графический интерфейс пользователя. Вместо этого все работает через командную строку. Приборная панель CoreUpdate предлагает информацию о состоянии машины, запущенных службах и состоянии кластера. Но она доступна только в качестве компонента подписки Premium Managed Linux

Архитектура контейнерного Linux

Container Linux является легковесным и предназначен для контейнеризации и кластеризации. Поскольку здесь нет окружения рабочего стола, конфигурация функционирует иначе, чем в операционной системе Linux, такой как CentOS или Ubuntu. При начальной загрузке Container Linux загружает файл cloud-config. Вам нужно будет ввести информацию в cloud-config. Это может быть немного сложно, особенно для тех, кто не знаком с cloud-config. Но это важный файл, который дает возможность Container Linux загружать основные сервисы, изменять параметры и управлять кластерами

Далее, файл

etcd

 

fleet

демоны остаются неотъемлемой частью Container Linux. Обе эти службы запускаются при старте по умолчанию. Кроме того, при загрузке файл cloud-config позволяет хосту узнать, как присоединиться к существующему кластеру. При загрузке системы в файл cloud-config добавляется файл

etcd

Демон распределяет и хранит данные для хостов в кластере. Он необходим для поддержания конфигураций, а также для обнаружения сервисов. Демон

fleet

Демон похож на распределенный init. Этот демон связан с файлом

systemd

init для хостов в кластере и выполняет такие задачи, как планирование сервисов

Каждая система в кластере

fleet

кластер работает только один

fleetd

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

etcd

является единственным хранилищем данных. Такая информация, как наличие кластера, состояние устройства и файлы устройства хранятся в

etcd

демон. Кроме того, это среда для связи агента флота и двигателя

Практическая работа с Container Linux: Кто должен его использовать?

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

На сайте Air Pair опубликован отличный материал о стимулах CoreOS. В статье упоминается высокая доступность, обслуживание производственной среды, контроль версий программного обеспечения и etcd как основные аргументы в пользу использования Container Linux. Примечательно, что существует также невероятно преданное сообщество разработчиков открытого кода.Container Linux предназначен для опытных пользователей Linux. Справочная документация, хотя и является исчерпывающей, предполагает умеренную степень знакомства с Linux. У новичков и начинающих пользователей могут возникнуть проблемы с первоначальной установкой

Более конкретно, cloud-config может оказаться сложной задачей. В разделе комментариев одного видеоролика по установке CoreOS пользователь YouTube Setyoso Nugroho заявил: ‘Отличный учебник! Довольно запутанно при изучении конфигурации файла #cloud-config в CoreOS’. Хотя конфигурация не представляет собой ничего сложного, Container Linux предполагает уверенное владение такими функциями Linux, как редактор VIM

Hands-On With Container Linux: Как установить

Существует множество способов установки Container Linux. Согласно сайту CoreOS, официальные платформы включают Amazon EC2, DigitalOcean, Microsoft Azure, bare metal и OpenStack. Наряду с Oracle Linux, CentOS и Suse, CoreOS является одной из немногих совместимых с Azure операционных систем Linux. Благодаря активному сообществу поддерживаются также такие платформы, как Packet, Rackspace, Brightbox, VirtualBox и VMware. Я обнаружил, что самым простым методом является установка Container Linux на VirtualBox с помощью ISO-файла. Вот краткое руководство по использованию VirtualBox

Настройка VirtualBox

Откройте VirtualBox, и вам будет предложено ввести имя виртуальной машины, тип операционной системы и версию. Я назвал свою виртуальную машину просто CoreOS. В качестве типа выберите Linux. В качестве версии используйте Linux 2. 6/3.x/4/x (64-bit). Нажмите кнопку Далее

Теперь вам нужно выделить оперативную память.CoreOS предлагает минимум 1024 МБ оперативной памяти

После выбора оперативной памяти необходимо добавить виртуальный жесткий диск. Используйте опцию ‘Создать виртуальный жесткий диск сейчас’

На следующем экране вам будет предложено выбрать тип файла жесткого диска. Выберите VDI, или VirtualBox Disk Image

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

Затем выберите местоположение и размер файла. Я оставил в качестве имени CoreOS по умолчанию и выбрал размер данных файла 8 ГБ

Когда виртуальная машина CoreOS VirtualBox настроена должным образом, нажмите зеленую кнопку Start

После нажатия кнопки Start вам нужно будет выбрать загрузочный диск. Перейдите в папку, где находится ваш CoreOS ISO, и продолжите

Настройка Container Linux

После запуска вашего CoreOS ISO, Container Linux начинает загружаться. В конце концов, вы увидите строку с указанием версии CoreOS и командной строки:

core@localhost

Введите:

sudo openssl passwd -1 > cloud-config-file

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

cat cloud-config-file

Это возвращает длинную строку и создает новый файл cloud-config. Теперь откройте cloud-config в визуальном редакторе:

vi cloud-config-file

Это загружает файл cloud-config, который вы можете редактировать.CoreOS включает расширенный пример файла cloud-config:

Моя выглядела следующим образом:

#cloud-config

users: moe.

passwd:  SSL password.

groups:

- sudo.

- docker

Вы можете проверить свой файл cloud-config, введя:

cat cloud-config-file

Это вернет ваш файл конфигурации. Если все выглядит хорошо, приступайте к установке CoreOS:

sudo coreos-install -d /dev/sda -C stable -c cloud-config-file

Вы увидите сообщение о том, что CoreOS загружается, записывается и проверяется. Как только это закончится, вы увидите сообщение ‘Success! CoreOS версия установлена на /dev/sda.’

Выключите виртуальную машину CoreOS, а затем запустите ее снова. При повторном запуске не забудьте отмонтировать CoreOS ISO, иначе снова запустится live CD

CoreOS загрузится, и вы увидите приглашение к входу в командную строку:

localhost login:

Введите свое имя пользователя и пароль. Загрузится сообщение с надписью ‘Container Linux by CoreOS version ‘ и свежая командная строка

Hands-On With Container Linux: Следующие шаги

Теперь, когда Container Linux от CoreOS правильно установлен, вы можете приступить к настройке контейнеров и кластеров. В документации CoreOS есть отличное руководство по быстрому запуску. Там есть информация об обнаружении сервисов с помощью etcd, а также раздел об управлении контейнерами с помощью Docker. Я провел несколько быстрых тестов, таких как Docker pull ‘Hello World’. Кроме того, я установил образ Plex Docker, поскольку я большой любитель медиасерверов. Наконец, я настроил fleet для управления кластером

Сначала необходимо настроить основные компоненты Container Linux:

  • etcd.
  • Docker.
  • Флот

Настроив эти три первоосновы, вы будете готовы к обнаружению сервисов, управлению кластерами и настройке контейнеров. После этого вы сможете приступить к контейнеризации приложений и безопасному тестированию настольных приложений в защищенном контейнере Docker

Практическая работа с Container Linux: Заключительные мысли

Я не часто использую контейнеры, но Container Linux упростил развертывание. Документация превосходна и содержит примеры конфигурационных файлов. Обратите внимание, что для новичков несколько неофициальных видеоуроков по установке упрощают установку CoreOS. Хотя CoreOS утверждает, что Container Linux является легковесным, я изначально был настроен скептически. Тем не менее, я запустил Container Linux на виртуальной машине с довольно низким потреблением ресурсов. И поскольку я хотел проверить, действительно ли Container Linux легкий, я использовал свой устаревший ноутбук HP и не столкнулся с какими-либо проблемами

Однако некоторые шаги в начальной установке не очень ‘дружелюбны к новичкам’. Установка и настройка Container Linux требует хорошего знания Linux. Примечательно, что я не пробовал приборную панель CoreUpdate, которую CoreOS предлагает в качестве платной премиум-функции. Хотя у меня нет проблем с использованием командной строки, графическая среда для мониторинга была бы приятным дополнением

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

Это отличное готовое решение для новичков в области контейнеров, а также для опытных инженеров DevOps, сисадминов и администраторов баз данных. В конечном итоге Container Linux от CoreOS – это простое средство создания масштабируемой, эффективной, контейнерной среды

Используете ли вы CoreOS? Планируете ли? Дайте нам знать, как вы используете контейнеры в Linux в разделе комментариев ниже!

Об авторе

Алексей Белоусов

Привет, меня зовут Филипп. Я фрилансер энтузиаст . В свободное время занимаюсь переводом статей и пишу о потребительских технологиях для широкого круга изданий , не переставая питать большую страсть ко всему мобильному =)

Комментировать

Оставить комментарий