在64位主机上运行32位LXC?

我以为64位主机可以启动32位LXC,因为我们可以在LXC创build期间指定arch。

hostmc$> lxc-create -n ubuntu -t ubuntu -- i386 

主机:

  hostmc$> uname -a Linux D 3.11.0-26-generic #45~precise1-Ubuntu SMP Tue Jul 15 04:02:35 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux 

但是,然后login到32位LXC容器,我发现uname -a指定为x86_64的拱,甚至运行文件命令也指定arch为x86_64而不是i386

  hostmc$> lxc-console -n ubuntu ubuntu@ubuntu:~$ uname -a Linux ubuntu 3.11.0-26-generic #45~precise1-Ubuntu SMP Tue Jul 15 04:02:35 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux ubuntu@ubuntu:~$ file /bin/ls /bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x37cdd635587f519989044055623abff939002027, stripped 

在我的Debian 8.2(jessie)上,我得到:

 root@srv1:~# uname -a Linux srv1 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u4 (2015-09-19) x86_64 GNU/Linux root@srv1:~# lxc-create -n vm -t debian --dir /data/vm -- -a i386 ... root@srv1:~# lxc-start -n vm ... (in the VM) root@vm:~# uname -a Linux vm 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u4 (2015-09-19) i686 GNU/Linux 

与您的示例的关键区别是-a标志。

当主机运行64位系统时,当你执行uname时,容器将总是显示一个64位的系统。

容器和主机共享相同的Linux内核实例。 容器是封装的进程,但仍然在主机内核中运行。 如果主机内核是64位的内核,容器进程总是执行64位的进程。