Установка гостевой ОС LXC

Я создал виртуализированный физический сервер LXC с Centos 6.8 в качестве хост-ОС.
Теперь, когда я создаю гостевую виртуальную машину с использованием шаблона Centos по умолчанию, она создает виртуальные машины с Centos 6.8 в качестве гостевой ОС.
Я хотел создать виртуальную машину с версией Centos 7.2 в качестве гостевой ОС. Это возможно?

Я выполнил следующие шаги для создания и запуска виртуальной машины.

  1. Создал копию шаблона centos и жестко запрограммировал версию 7.2. внутри шаблона. (Насколько я понимаю, он проверяет / etc / os-release для идентификатора CPE ID)
  2. Создана гостевая виртуальная машина, указывающая на этот новый созданный шаблон. (Версия Centos 7.2 была загружена и помещена в кэш LXC)
  3. Гостевая виртуальная машина создана. Я изменил сетевую ссылку в файле конфигурации на мостовую сеть.
  4. Я запустил гостевую виртуальную машину, но я вижу, что запускается только процесс systemd (с помощью команды pstree ), IP-адрес не назначен виртуальная машина, и я не могу войти в гостевую виртуальную машину.

Мне нужна была виртуальная машина с Centos 7.2 в этой среде. Пожалуйста, расскажите, как этого добиться.

1
задан 9 May 2017 в 10:01
1 ответ

Я настроил шаблон lxc CentOS для поддержки CentOS 7.

Копия созданного мной шаблона lxc размещена по адресу https://github.com/nirmalraj17/ lxc / blob / master / templates / lxc-centos.in

Это было сделано, потому что были некоторые шаги, которые были связаны с версией ОС 7, которая не упоминалась в текущем шаблоне lxc-centos, и была упомянута в lxc- шаблон оракула. Я вынул соответствующие разделы из lxc-oracle и добавил их в текущий шаблон lxc-centos и создал новый шаблон с именем lxc-centos-7.

Затем создайте контейнер lxc с помощью команды

lxc-create -n centos7 -t /usr/local/share/lxc/templates/lxc-centos-7  -- -R 7

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

После этого, если вы попытаетесь запустить контейнер LXC, вы получите "[!!!! !!] Не удалось выделить объект-менеджер, зависание. " при попытке запуска.

Теперь создайте каталог systemd в / cgroup

Mount, используя команду ниже.

 mount -t cgroup -o none,name=systemd cgroup /cgroup/systemd

Теперь, если вы запустите контейнер LXC и попытаетесь войти в систему, вы получите сообщение об ошибке « сервер отказался выделить pty »

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

[root@centos ~]# vi /usr/local/var/lib/{container_name}/rooftfs/usr/local/bin/device_initiation.sh
    #!/bin/bash
    mknod -m 600 /dev/console c 5 1 2>/dev/null
    mknod -m 666 /dev/null c 1 3 2>/dev/null
    mount -n -t tmpfs none /dev 2>/dev/null
    mknod -m 622 /dev/console c 5 1 2>/dev/null
    mknod -m 666 /dev/null c 1 3 2>/dev/null
    mknod -m 666 /dev/zero c 1 5 2>/dev/null
    mknod -m 666 /dev/ptmx c 5 2 2>/dev/null
    mknod -m 666 /dev/tty c 5 0 2>/dev/null
    mknod -m 444 /dev/random c 1 8 2>/dev/null
    mknod -m 444 /dev/urandom c 1 9 2>/dev/null
    chown root:tty /dev/{console,ptmx,tty} 2>/dev/null
    ln -s /proc/self/fd /dev/fd 2>/dev/null
    ln -s /proc/self/fd/0 /dev/stdin 2>/dev/null
    ln -s /proc/self/fd/1 /dev/stdout 2>/dev/null
    ln -s /proc/self/fd/2 /dev/stderr 2>/dev/null
    ln -s /proc/kcore /dev/core 2>/dev/null
    mkdir /dev/pts 2>/dev/null
    mkdir /dev/shm 2>/dev/null
    mount -t devpts -o gid=4,mode=620 none /dev/pts 2>/dev/null
    mount -t tmpfs none /dev/shm 2>/dev/null

Поскольку мы помещаем этот файл в usr / local / bin, эта команда будет доступна из системы напрямую.

Теперь, чтобы запустить сервер и выполнить этот сценарий оболочки, я создал сценарий оболочки.

[root@centos ~]# vi startup_centos7.sh
#!/bin/bash
lxc-start -n centos7
lxc-attach -n centos7 device_initiation.sh
exit

После того, как вы выполните сценарий, запустится CentOS 7, и вы сможете без проблем войти в систему.

После выполнения вышеуказанных шагов я получила рабочую версию CentOS 7.3, установленную на новом контейнере LXC.

1
ответ дан 3 December 2019 в 23:31

Теги

Похожие вопросы