Назад | Перейти на главную страницу

Контейнер LXC начинается с корневой файловой системы только для чтения

Я запускаю LXC на Debain Wheezy с использованием BTRFS и создал контейнер, используя lxc-create используя шаблон "debian" (вчера).

При запуске контейнера корневая файловая система в контейнере доступна только для чтения. Я ожидал, что rootfs в контейнере будет доступен для чтения и записи, а не только для чтения. Кажется, это нарушает запущенные службы и предотвращает lxc-shutdown и другие инструменты хоста от взаимодействия с контейнером.

Я использовал mount -o remount,rw / чтобы сделать rootfs доступным для чтения и записи, но это слишком поздно для процесса загрузки контейнера. Я установил только несколько дополнительных пакетов и еще не сделал значительной настройки.

Что мне нужно сделать, чтобы контейнер загрузился с rootfs для чтения и записи?

[EDIT]: похоже, что файловая система хоста была помечена как доступная только для чтения. Выполнение операции чтения-записи с последующим запуском контейнера означает, что у контейнера есть rootfs для чтения-записи. Однако, когда контейнер выключен, файловая система снова доступна только для чтения. Появляется, что завершение работы контейнера отмечает ФС как доступную только для чтения. Есть ли что-то, что можно сделать, чтобы он этого не сделал?

Шаблон «debian» в LXC на Debain Wheezy в настоящее время (начало марта 2014 г.) не отключает службы, которые могут вызывать проблемы.

Ключевой службой, вызывающей проблемы в этом случае, была «umountroot», исправить, запустив

chroot /path/to/containername/rootfs /usr/sbin/update-rc.d -f umountroot remove

Другие службы для удаления включают

  • hwclock.sh
  • hwclockfirst.sh

Возможно, есть и другие способы решения этой проблемы, например, сброс возможностей. Другой способ решить эту проблему - изменить шаблон, например, предложенный http://cblog.burkionline.net/lxc-linux-container/, но обратите внимание, что он не включает umountroot как одну из отключенных служб и потребует дополнительных настроек.

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

На такое поведение также указывают эти сообщения при попытке запустить lxc-start с файловой системой только для чтения:

lxc-start: failed to pin the container's rootfs
lxc-start: failed to spawn 'containername'
lxc-start: No such file or directory - failed to remove cgroup '/sys/fs/cgroup//lxc/containername'

Также не удаляется хост-часть уже созданных сетевых интерфейсов. Так ifconfig перечисляет оставшиеся записи, например vethuKwnid.


Благодаря Руководство по серверу Ubuntu Я проверил, что запуск такого контейнера достаточно:

sudo lxc-start -s lxc.cap.drop=sys_admin -n containername