LXC容器以只读根文件系统启动

我使用BTRFS在Debain Wheezy上运行LXC,并使用“debian”模板(昨天)创build了一个使用lxc-create的容器。

启动容器时,容器中的根文件系统是只读的。 我预计容器中的rootfs将是可读写的,而不是只读的。 这似乎破坏了启动的服务,并防止lxc-shutdown和其他主机工具与容器交互。

我一直在使用mount -o remount,rw /来使rootfs读写,但在容器的启动过程中为时已晚。 我只安装了一些额外的软件包,还没有做任何重要的configuration。

我需要做什么才能让容器启动读写rootfs?

[编辑]:似乎主机的文件系统被标记为只读。 使其可读写,然后启动容器意味着容器具有读写rootfs。 但是,当容器closures时,文件系统将只读取一次。 出现容器closures标志FS为只读。 有什么可以阻止它做到这一点?

Debian Wheezy目前(2014年3月初)的LXC模板“debian”不禁用可能导致问题的服务。

在这种情况下导致问题的关键服务是“umountroot”,通过运行修复

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

其他要删除的服务包括

  • hwclock.sh
  • hwclockfirst.sh

还有解决这个问题的其他方法,比如放弃function。 解决这个问题的另一种方法是更改​​模板,比如http://cblog.burkionline.net/lxc-linux-container/build议的模板,但是请注意,它不包括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' 

此外,已经创build的networking接口的主机部分不会被删除。 所以ifconfig列出了像vethuKwnid剩余的条目。


感谢Ubuntu Serverguide,我证实启动容器就足够了

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