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

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

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

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

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

[РЕДАКТИРОВАТЬ]: кажется, что файловая система хоста была помечена как только для чтения. Выполнение чтения и записи, а затем запуск контейнера означает, что у контейнера есть rootfs для чтения и записи. Однако, когда контейнер выключен, файловая система снова только для чтения. Появляется, что завершение работы контейнера помечает FS как только для чтения. Есть ли что-то, что нужно сделать, чтобы помешать этому?

2 ответа

Решение

Шаблон "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 Serverguide я проверил, что для запуска такого контейнера достаточно:

sudo lxc-start -s lxc.cap.drop=sys_admin -n containername
Другие вопросы по тегам