Найти в Дзене
PLAFON

Привет 👋! Сегодня снова поговорим про инженерные эксперименты

Привет 👋! Сегодня снова поговорим про инженерные эксперименты🧑‍💻. На этот раз — упаковка ОС в Docker 🐳 и работа с образом SelectOS.

Скриншоты все в конце поста 😉

А зачем вообще упаковывать ОС в Docker?

если/когда (нужное подчеркнуть) доступ к Docker Hub отключат, а такое уже случалось. Проще ведь будет использовать свои системы 💻. Да и просто интересно проверить, как это работает. А вдруг получится что-то удобное для повседневной работы?

Безусловно хотелось бы иметь ресурс с проксированием + своими дистрами в свободном доступе.

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

На входе у нас SelectOS — прочитать подробнее можно у них на официальном сайте. У него есть свои особенности, например, изменённая логика, у остальных это выглядит, как site/distro/, а в данном случае site/dists/distro. Это чуть усложнило задачу, но не критично.

Попробовал два пути:

1️⃣ Debootstrap

Это стандартный инструмент для создания мини-ОС на базе Debian. Вроде бы всё просто: скачал, настроил конфиг, запустил. Но мы ведь с вами знаем, что просто запускается только Gentoo 😤

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

Пришлось копировать конфиг Debian, переименовывать его и дописывать новый путь до репозитория SelectOS. В итоге базовая ОС развернулась, но дальше я застрял на этапе настройки дополнительных компонентов 😅. И честно говоря про второй вариант вспомнил уже порядком утомившись.

2️⃣ Заготовка для контейнера

Нашёл в репозитории файл selectos-1.1.tar — опасаясь радоваться — я сделал докерфайл (скриншоты, как всегда аттачим внизу поста) 📦. Запустил билд и вуаля! Образ SelectOS весом всего 64 МБ ! Это без установки обновлений и доп. пакетов. После их установки размер, конечно, вырастет, но в таком виде это уже круто 🚀.

По моему слим редакция весит побольше, но поправьте меня если я ошибаюсь 🤔.

На основе этого образа решил собрать PostgreSQL 🗃. Добавил в Dockerfile команду apt-get install postgresql, немного поправил права для пользователя postgres — и всё завелось🔥. Минут 5–10 магии, и контейнер готов.

Для удобства сделал манифесты для Kubernetes (Minikube) — деплой и PVC (Persistent Volume Claim) для хранения данных базы.

Если совсем коротко:

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

Хотелось бы понять, как всё это работает в условиях ограниченных ресурсов ⚙️.

Взял машину с 3 CPU и 3 GB RAM , развернул Minikube (мини-Kubernetes). Для нагрузки использовал Pgbench — встроенный инструмент PostgreSQL для тестирования производительности (найти можно на сайте PostgreSQL).

Минимальные требования PostgreSQL: 1 CPU и 1 GB RAM .

Minikube требует 2 CPU и 2 GB RAM .

Получается, что по минимальным требованиям я проходил "впритирочку".

Запустил тест:

* База под нагрузкой использовала ~50% CPU.

* Память загрузилась примерно на треть.

* Основная нагрузка досталась самому Pgbench 💥.

Итог:

Результаты впечатляют 😲. Даже на ограниченных ресурсах, всё работает стабильно!

Что хотел сказать в конце? Используйте проверенные решения, но не бойтесь экспериментировать ✨. Возможно, именно ваш эксперимент станет полезным в работе или повседневной жизни. Скриншоты, файлы и манифесты — в комментариях 👇.

-2
-3
-4
-5
-6
-7
-8
-9