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.
我正在尝试使用 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.