LXC容器运行X服务器

  

LXC容器运行X服务器

  

Linux容器(LXC)项目提供了Linux上操作系统级虚拟化容器管理工具。大多数应用容器的场合是不需图形界面,如FTP, HTTP等后台服务。容器要运行X桌面环境可通过ssh, xdmcp远程方式,此时容器是X客户机,容器是无需安装X服务器。

  

Linux主机系统使用Ctrl-Alt-F1到Ctrl-Alt-F7在不同的虚拟终端之间进行切换,其中vt01到vt06是文本模式的终端,而vt07是X终端,X一般在虚拟终端7 (vt07)上运行。当需要容器以本地方式运行X时,就需为容器分配另外一个虚拟终端(如vt09)。

  

本文介绍的内容是在容器中以本地方式运行X,即在宿主的vt09上运行容器X

  

实验环境:同一台机器上安装两套完整的debian 8桌面系统,debian-A和debian-B。

  

1。手工指定键盘/鼠标输入设备驱动

  

启动debian-B系统,安装xserver-xorg-input-kbd和xserver-xorg-input-mouse软件包,创建/etc/X11/xorg.conf.d/目录,在其下创建10-input.conf文件,内容如下:

  
 <代码>
  # - v -
  
  “ServerFlags”小节
  #禁止设备自动检测
  选择“AutoAddDevices”“假”
  EndSection
  
  “ServerLayout”小节
  标识符“桌面”
  InputDevice“Mouse0”“CorePointer”
  InputDevice“Keyboard0”“CoreKeyboard”
  EndSection
  
  “InputDevice”小节
  标识符“Keyboard0”
  司机“kbd”
  #选项”XkbLayout”“gb”
  EndSection
  
  “InputDevice”小节
  标识符“Mouse0”
  司机“鼠标”
  选择“协议”“自动”
  选择“设备”“/dev/输入/老鼠”
  选择“ZAxisMapping”“4 5 6 7”
  EndSection
  
  # - ^  
  

重新启动debian-B系统,由10-input.conf配置文件手工指定键盘/鼠标设备运行正常。

  

2。配置容器

  

先关闭debian-B系统,然后启动debian-A系统,将debian-B系统的根挂载到debian-A系统的目录/mnt/sdc1/上。

  

debian-A系统作为宿主(下面将称宿主)
debian-B系统作为容器(下面将称容器)

  

从宿主复制设备文件到容器根中
root@debian:/home/灵灵# cp - a/dev/tty1/mnt/sdc1/dev/
root@debian:/home/灵灵# cp - a/dev/tty2/mnt/sdc1/dev/
root@debian:/home/灵灵# cp - a/dev/tty3/mnt/sdc1/dev/
root@debian:/home/灵灵# cp - a/dev/tty4/mnt/sdc1/dev/
root@debian:/home/灵灵# cp - a/dev/tty5/mnt/sdc1/dev/
root@debian:/home/灵灵# cp - a/dev/tty6/mnt/sdc1/dev/
root@debian:/home/灵灵# cp - a/dev/tty7/mnt/sdc1/dev/
root@debian:/home/灵灵# cp - a/dev/tty8/mnt/sdc1/dev/
root@debian:/home/灵灵# cp - a/dev/tty9/mnt/sdc1/dev/
root@debian:/home/灵灵# cp - a/dev/input/mnt/sdc1/dev
root@debian:/home/灵灵#

  

将容器的inittab文件中以下行注释掉
1:2345:重生:38400/sbin/盖蒂tty1
23:重生:38400/sbin/盖蒂tty2
3:23重生:38400/sbin/盖蒂tty3
23:重生:38400/sbin/盖蒂tty4
5:23:重生:38400/sbin/盖蒂tty5
6:23:重生:/sbin/盖蒂38400 tty6

  

并增加以下行
1:2345:重生:38400/sbin/盖蒂控制台
c1:23:重生:38400/sbin/盖蒂tty1
c2:23:重生:38400/sbin/盖蒂tty2
c3:23:重生:38400/sbin/盖蒂tty3
c4:23:重生:38400/sbin/盖蒂tty4
c5:23:重生:/sbin/盖蒂38400 tty5

  

创建容器vm3,其配置配置如下:
linlin@debian: ~ $猫/var/lib/lxc/vm3/config

  
 <代码> # #容器
  lxc。utsname=vm3
  
  # - v -项目(1)
  lxc.network.type=veth
  lxc.network.flags=了
  lxc.network.link=br0
  lxc.network.name=eth0
  lxc.network.mtu=1500
  lxc.network.ipv4=192.168.0.10/24
  # - ^ -
  
  lxc。rootfs=/mnt/sdc1
  lxc。tty=6
  lxc.pts=1024
  
  # #功能
  lxc.cap。=mac_admin下降
  lxc.cap。=mac_override下降
  lxc.cap。=sys_admin下降
  lxc.cap。=sys_module下降
  
  # #设备
  #否认所有设备
  lxc.cgroup.devices.deny=一个
  #允许mknod所有设备(但不是使用它们)
  lxc.cgroup.devices.allow=c *: * m
  lxc.cgroup.devices.allow=b *: * m
  
  #/dev/控制台
  lxc.cgroup.devices.allow=c 5:1读写存储器
  #/dev/保险丝
  lxc.cgroup.devices.allow=c 10:229读写存储器
  #/dev/null
  lxc.cgroup.devices.allow=c 1:3读写存储器
  #/dev/ptmx
  lxc.cgroup.devices.allow=c 5:2读写存储器
  #/dev/pts/*
  136年lxc.cgroup.devices.allow=c: *读写存储器
  #/dev/随机的
  lxc.cgroup.devices.allow=c 1:8读写存储器
  #/dev/rtc
  lxc.cgroup.devices.allow=c 254:0读写存储器
  #/dev/电传
  lxc.cgroup.devices.allow=c 5:0读写存储器
  #/dev/urandom
  lxc.cgroup.devices.allow=c 1:9读写存储器
  #/dev/0
  lxc.cgroup.devices.allow=c 1:5读写存储器
  
  # - v -项目(2):容器要启动X所必需的
  # tty9即vt9
  lxc.cgroup.devices.allow=c 4:9读写存储器
  #/dev/mem
  lxc.cgroup.devices.allow=c 1:1读写存储器
  #输入
  lxc.cgroup.devices.allow=c 13: *读写存储器
  # - ^ -
  
  # #文件系统
  lxc.mount。输入=proc/mnt/sdc1/proc proc nodev, noexec, nosuid 0 0
  lxc.mount。入口=sysfs/mnt/sdc1/sys sysfs违约,ro 0 0 

LXC容器运行X服务器