Могу ли я создать образ LXC из моей собственной ОС?

Я новичок в LXC. Я хочу создать свои собственные контейнеры lxc из существующих ОС (мое собственное ядро ​​unix скомпилировано в другой архитектуре). Я пытаюсь использовать "lxc-create". Может кто-нибудь предложить мне, как создать свои собственные контейнеры, и возможно ли создать один или нет с этим подходом? Нужно ли менять какие-либо конфигурации после создания моего собственного контейнера?

Если lxc не подходит для этого, могу ли я добиться этого с помощью любых других контейнерных двигателей? PS Мне не нужны VMS или любые гипервизоры для достижения того же.

1 ответ

Просто чтобы уточнить, вы пытаетесь создать образ для контейнера из собственной операционной системы? Если это так, я не верю, что это возможно, используя lxc-create,

lxc-create может использоваться для загрузки общедоступных изображений различных дистрибутивов. Например, вы можете запустить эту команду:

 lxc-create -t download -n my-container-name 

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

Обычная процедура для настройки ваших собственных контейнеров в соответствии с вашими спецификациями заключается в создании образа для ваших требований из образа базовой операционной системы. Есть несколько способов сделать это. Из раздела "Создание раздела изображения вручную" здесь:

1) Создайте контейнерную файловую систему. Это полностью зависит от используемого вами дистрибутива. Для Ubuntu и Debian это будет сделано с помощью debootstrap.

2) Сконфигурируйте все, что нужно для правильной работы дистрибутива в контейнере (если что-то нужно).

3) Создайте архив из этой файловой системы контейнера, при необходимости сжав его.

4) Напишите новый файл metadata.yaml, основанный на описанном выше.

5) Создайте еще один архив, содержащий этот файл metadata.yaml.

6) Импортируйте эти два архива в виде изображения LXD с:

lxc image import <metadata tarball> <rootfs tarball> --alias some-name

Другим методом будет создание работающего контейнера из общего образа Linux (как описано ранее с использованием lxc-create команда), затем введите оболочку контейнера, чтобы вы могли изменить конфигурацию в соответствии с вашими потребностями, а затем опубликуйте измененный контейнер как новый образ. Например:

lxc launch ubuntu:14.04 my-container
lxc exec my-container bash
<do whatever change you want>
lxc publish my-container --alias my-new-image

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

Что касается вашего вопроса о других возможностях, я бы предложил изучить контейнеры Docker. Если вы используете Google Container Engine в какой-то мере (как показывают теги в этом сообщении), вы сможете использовать Container Registry для тегирования и хранения различных версий ваших изображений, а также имеется много документации и общедоступных изображения доступны для Docker онлайн. Если вы хотите интегрировать его с виртуальными машинами в GCP, здесь есть некоторая полезная информация, если вы хотите узнать больше.

Другие вопросы по тегам