debootstrap 无法为 docker 创建 ubuntu 旧的 i386 映像

debootstrap can't create ubuntu old i386 image for docker

我正在尝试使用 debootstrap 创建一个 docker 图像。 我想创建一个 ubuntu 8.04 i386 映像。 当我运行

sudo debootstrap --verbose --arch=i386 hardy hardy http://old-releases.ubuntu.com/ubuntu/

然后

sudo tar -C hardy -c . | sudo docker import - hardy

它创建图像但是当我用

检查容器内的拱门时

uname -m

它给了我 x86_64 而不是我之前要求的 i386。

如有任何建议,我们将不胜感激。 谢谢


解决方案

解决这个问题的一种方法(参见答案)是 将 ENTRYPOINT ["linux32"] 添加到 Dockerfile

因为架构来自内核,内核来自宿主机,而不是容器。例如,这是两个非常不同的发行版的 uname 输出:

$ docker run alpine uname -a
Linux 5ef5dac8a8ac 4.1.13-boot2docker #1 SMP Fri Nov 20 19:05:50 UTC 2015 x86_64 Linux
$ docker run debian uname -a
Linux c47f04c71efb 4.1.13-boot2docker #1 SMP Fri Nov 20 19:05:50 UTC 2015 x86_64 GNU/Linux

他们都假设了宿主机的内核和架构。一个比我的更好的答案:https://superuser.com/a/889474/73766

我从

复制了 jpetazzo 的回答

https://github.com/docker/docker/issues/611

uname will always tell you 64 bits. Look at e.g. "file /bin/sh" to see the real arch of the filesystem.