我有一个运行Raspian(Debian 9 Stretch Arm)的Raspberry Pi 2。我想创建一个纯Debian Stretch的Chroot环境,并在那里安装Docker。我从这里遵循所有正确的说明:https : //docs.docker.com/install/linux/docker-ce/debian
当需要安装docker-ce时,Aptitude说我缺少了一些库(例如libc6),但是我相信这些库已经存在并且未被人们所认识。这似乎是一个非常简单的过程,但是我遇到了一个巨大的障碍。
我录制了安装https://youtu.be/wMmZGxZOBbs的视频
这是我执行的命令(全部以root身份运行):
mkdir d
debootstrap stretch d
mount -B /dev d/dev
mount -B /dev/pts d/dev/pts
mount -B /proc d/proc
mount -B /sys d/sys
chroot d /bin/bash
chroot'd
nano /etc/apt/sources.list # add contrib and non-free
apt-get update
apt-get install aptitude
apt-get install bash-completion
apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
add-apt-repository \
"deb [arch=armhf] https://download.docker.com/linux/debian \
$(lsb_release -cs) \
stable"
apt-get update
apt-get install docker-ce # Fails, says package unavailable
aptitude # Try to install docker in aptitude shows missings libraries
运行便捷脚本时,我收到以下输出:
root@pi2:/# curl -fsSL https://get.docker.com -o get-docker.sh
root@pi2:/# sh get-docker.sh
# Executing docker install script, commit: 4957679
+ sh -c apt-get update -qq >/dev/null
+ sh -c apt-get install -y -qq apt-transport-https ca-certificates curl >/dev/null
+ sh -c curl -fsSL "https://download.docker.com/linux/debian/gpg" | apt-key add -qq - >/dev/null
Warning: apt-key output should not be parsed (stdout is not a terminal)
+ sh -c echo "deb [arch=armel] https://download.docker.com/linux/debian stretch edge" > /etc/apt/sources.list.d/docker.list
+ sh -c apt-get update -qq >/dev/null
+ sh -c apt-get install -y -qq --no-install-recommends docker-ce >/dev/null
E: Unable to locate package docker-ce
运行apt-get update
表明存储库“不支持架构'armel'”。
感谢AB的回答,它可能无法完全解决问题,但我的确可以取得很大的进步。
# ### Architecture Output from Debian Chroot
# dpkg --print-architecture
armel
和
# ### Architecture Output from Raspian
# dpkg --print-architecture
armhf
# lsb_release -cs # My system is up to date
stretch
# debootstrap --arch=armhf stetch d
E: No such script: /usr/share/debootstrap/scripts/stetch
我发现可以使用以下命令来安装Debian architechture Armhf。
# debootstrap --foreign --arch=armhf stretch dir
我通过强制Debian作为体系结构armhf来成功安装了docker。这是我用来将Debian作为体系结构armhf安装的步骤。
mkdir d
debootstrap --foreign --arch=armhf stretch d
cat /etc/resolv.conf > d/etc/resolv.conf
chroot d /bin/bash
./debootstrap/debootstrap --second-stage
apt-get clean
之后,我将按照正常方式在Debian上安装docker的过程。
TL; DR:您无法docker-ce
在armel
体系结构上安装Docker的软件包,但是您的系统(作为Rasberry Pi 2)应该始终在运行armhf
,因此您的设置有问题。
操作系统要求
要安装Docker CE,您需要以下Debian或Raspbian版本之一的64位版本:
- 克星10
- 弹力9(稳定)/覆盆子弹力
Docker CE在
x86_64
(或amd64
)armhf
,和arm64
体系结构上受支持。在您的系统上该文本有点误导性,因为该文本armhf
受支持且为32位。无论如何,由于您的系统使用的是armel
体系结构而不是armhf
,因此docker.com没有可用的软件包。这就是为什么无论您尝试什么,都将无法遵循他们的指南并安装Docker的原因。
您可以先检查什么:
验证您的系统(chroot环境之外)使用armel
或armhf
用dpkg --print-architecture
。如果答案是肯定的,armhf
则您的debootstrap
命令出错了,您应该使用该--arch=armhf
选项再试一次。UPDATE:这是用于OP的,但似乎--foreign
也需要它,因此此命令可以实现:
debootstrap --foreign --arch=armhf stretch d
更新:验证内核也是armhf
内核。它是否在某处说-armv7
某物armv7l
?或仅此arm
或armv6
某物?可能只有内核不是正确的内核。如果不是armv7,则应考虑对其进行更改。否则,这是一个无法解释的错误debootstrap
,因为我无法在其他armhf
平台上重现该错误。
解决此问题的历史思路如下:
armhf
,然后使用armhf
代替进行重新安装armel
。Wikipedia告知Raspberry Pi 2的CPU至少是ARM Cortex-A7,因此非常适合armhf
该(过时的)Debian页面及其与Debian开发人员博客的链接。该raspbian库提供唯一 armhf
没有armel
。因此,完全没有理由armel
应该看到它,这很令人困惑。还有其他可能但不容易做到的事情:
armhf
,那么另一个解决方案超出了它的困难范围,那就是完成安装Docker所需的缺少的多体系结构库。docker.io
可用的软件包armel
(但它告诉您:“目前不支持在非amd64主机上使用docker.io”)。因此,可以想象当Raspbian出现时,此软件包可以使用。无论如何不要指望前沿版本。armel
架构重建那些Docker软件包。无论如何,这都需要您可能还没有的知识。即使安装了它,也armel
请考虑您尝试从Docker Hub提取的任何东西都是不兼容的:如果Docker不提供armel
机会,那么根本就不会有armel
生态系统。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句