Как вы, возможно, уже знаете, конфигурации системы могут без проблем сосуществовать в магазине Nix. Проблема здесь в том, что запущено несколько систем одновременно. Для этого вам понадобятся инструменты изоляции или виртуализации, такие как Docker, VirtualBox и т. Д.
Контейнеры NixOS
NixOS обеспечивает эффективную реализацию концепции контейнера при поддержке systemd-nspawn вместо среды выполнения контейнера на основе образа.
Их можно указать декларативно в configuration.nix
или императивно с помощью команды nixos-container
, если вам нужна большая гибкость.
Докер
Docker не был разработан для запуска всей операционной системы внутри контейнера, поэтому он может не подходить для тестирования развертываний на основе Nix OS, которые ожидают и предоставляют systemd и некоторые службы внутри своих единиц развертывания. . Хотя вы не получите хорошего опыта работы с Nix OS с Docker, Nix и Docker вам подойдут. ОБНОВЛЕНИЕ: и «сырые» пакеты Nix, и NixOS работают в Docker. Например, Arion поддерживает образы из простых модулей Nix, NixOS и «обычных» образов Docker.
NixOps
Для развертывания Nix OS внутри NixOS лучше всего использовать технологию, предназначенную для запуска внутри всей системы Linux.
Полезно иметь программу, которая управляет интеграцией за вас. В экосистеме Nix первым кандидатом на это является NixOps. Вы можете использовать NixOps с его серверной частью VirtualBox или (в настоящее время экспериментальной) серверной частью контейнера NixOS, либо вы можете использовать none
бэкэнд для развертывания на машинах, созданных вами с помощью другого инструмента.
Тесты
Если ваша цель - запустить автоматические интеграционные тесты, вы можете использовать Платформа тестирования виртуальных машин NixOS. Он использует виртуализацию Linux KVM (выставить / dev / kvm в песочнице) для запуска теста интеграции в сетях виртуальных машин и запускает их как производные. Это довольно эффективно, потому что ему не нужно создавать образы виртуальных машин, потому что он подключает хранилище Nix к виртуальной машине. Эти тесты построены так же, как и любые другие производные, что упрощает их выполнение.
Оптимизация магазина Nix
Уникальной особенностью Nix является то, что вы часто можете повторно использовать хранилище хоста Nix, поэтому возможность монтировать файловую систему хоста в контейнере / vm - это хорошая функция, которую можно использовать в вашем решении. Если вы создаете свои собственные решения, в зависимости от ваших потребностей, вы можете отложить эту оптимизацию, потому что она становится немного более сложной, если вы хотите, чтобы контейнер / vm мог изменять хранилище. Тесты NixOS решают эту проблему с помощью наложения файловой системы на виртуальную машину. Другой подход может заключаться в привязке монтирования хранилища Nix к сокету демона Nix.
person
Robert Hensing
schedule
04.12.2018