我正在尝试使用Ubuntu 14.04创建32位docker映像,并且每当我运行uname
时,都会看到它是x86_64
而不是i386
。谁能告诉我为什么会这样吗?
docker run talex5/lucid32 uname -m
奇怪的是,当我以另一种方式查询架构类型时,它说的是32位:
docker run i386/ubuntu:14.04 file /sbin/init
/ sbin / init:ELF 32位LSB共享对象,英特尔80386,版本1(SYSV),动态链接(使用共享库),用于GNU / Linux 2.6.24,BuildID [sha1] = c394677bccc720a3bb4f4c42a48e008ff33e39b1,已剥离`
当我下载说它们是32位的不同docker映像时,甚至当我使用debootstrap创建自己的docker映像时,这种情况始终会发生。
谢谢!
答案 0 :(得分:3)
uname
报告内核的版本和操作系统详细信息,但是Docker容器始终使用主机系统的内核,如果是64位内核,它将报告x86_64
。
使用32/64位混合操作系统安装(在libc6:i686
之类的Ubuntu土地上安装软件包)运行时,应该会看到相同的结果;在chroot中具有32位文件系统树;并在Docker容器中;与在具有64位内核的系统上运行32位二进制文件的情况相同。
答案 1 :(得分:0)
如今,只需一个简单的脚本即可实现。您可以使用https://github.com/docker-32bit/ubuntu。