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

时间:2015-08-11 15:01:25

标签: docker lxc

我认为64位主机可以启动32位LXC,因为我们可以选择在LXC创建期间指定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

但是在登录到32位LXC容器时,我发现uname -a将arch指定为x86_64,甚至运行file命令也将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

3 个答案:

答案 0 :(得分:3)

在我的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标志。

答案 1 :(得分:0)

当主机运行64位系统时,容器在执行uname时将始终显示64位系统。

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

答案 2 :(得分:0)

虽然已经晚了,但对某人可能会有帮助。

我在Ubuntu Bionic中使用32位Bionic来宾执行了以下操作:

sudo lxc launch images:ubuntu/18.04/i386 GuestName
# run with 
sudo lxc exec GuestName bash

uname -a返回:

Linux MachineName 4.15.0-46-generic #49-Ubuntu SMP Wed Feb 6 09:33:07 UTC 2019 i686 i686 i686 GNU/Linux

所以它是32位的,我正在调试的应用程序已确认它。