LINUX.ORG.RU

Nixery ― ad-hoc реестр контейнеров на базе Nix

 , , ,


0

1

Nixery – это Docker-совместимый реестр контейнеров, способный создавать образы контейнеров с помощью Nix.

В настоящее время основное внимание уделяется целевому созданию образов контейнеров.

Nixery поддерживает создание образов по запросу, основанных на image name. Каждый пакет, который пользователь включает в образ, указывается в качестве пути компонента имени. Компоненты пути ссылаются на ключи верхнего уровня в nixpkgs и используются для создания образа контейнера с использованием функциональности Nix – buildLayeredImage.

Мета-пакет shell предоставляет базу образов со основными компонентами ядра (такими, как bash и coreutils).

Пример доступен по ссылке.

>>> Подробности

anonymous

Проверено: jollheef ()

buildLayeredImage

Классная штука, собирает минимальные образы, всё очень эффективно дедуплицируется, сборка всегда воспроизводится. Одна только бида. Бывает нужно для отладки доустановить внутрь контейнера какой-нибудь пакет, вроде банального less или dnsutils. В каком-нибудь дебиане спокойно делается apt update && apt install. Но в образах, собранных с помощью buildLayeredImage, никакой nix-env не работает, потому что база данных Nix в контейнере отсутствует, тупо скопированы пакеты в /nix/store. Наверно, как-то решается, но за полдня ковыряния так и не победил, а документации, как всегда, нет. Ну и как-то так.

anonymous ()
Ответ на: комментарий от anonymous

Ты там что, в проде отлаживать собрался, баловник?

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

anonymous ()
Ответ на: комментарий от anonymous

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

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

Дык дистрибутив тут не при чём, в https://github.com/LnL7/nix-docker, например, nix-env прекрасно работает. Проблема в недоделанности buildLayeredImage.

anonymous ()
Ответ на: комментарий от anonymous

Бывает нужно для отладки доустановить внутрь контейнера какой-нибудь пакет

Нихеру первый раз вижу и не пробовал, но в докере подобное затруднение встречалось. Там работает такой трюк: Для отладки /nix/build маунтится с хоста прямо внутрь контейнера по тому же пути. Всё собранное nix-envом там естественным образом появляется. А что никс-профиля нет - ну руками PATH дописывать, для отладки чего не сделаешь. Может и здесь такое прокатит?

ierton ★★ ()
Ответ на: комментарий от anonymous

Задачи разные, вот и реализация разная. buildLayeredImage работает точно как заявлено в документации. Наверное он просто не подходит для твоего случая.

anonymous ()