更新:

更新:

我有一个树莓派2跑步拉斯皮安(Debian 9 伸展臂)。我想创建一个纯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 后

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’”。

更新2

感谢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

更新3

我发现可以使用以下命令安装 Debian 架构 Armhf。

# debootstrap --foreign --arch=armhf stretch dir

更新4解决方案

我通过强制 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 的过程。

答案1

TL;DR:您无法在架构docker-ce上安装 Docker 的软件包armel,但您的系统(Rasberry Pi 2)无论如何都应该运行armhf,因此您的设置有问题。

码头工人的Debian 的要求:

操作系统要求

要安装 Docker CE,您需要以下 Debian 或 Raspbian 版本之一的 64 位版本:

  • 巴斯特10
  • 拉伸 9(稳定)/Raspbian 拉伸

x86_64Docker CE 在(或amd64) armhf、 和arm64 架构上受支持。在您的系统上该文本有点误导,因为armhf受支持并且是 32 位。无论如何,由于您的系统正在使用armel建筑而不是armhf,docker.com 上没有可用的软件包。这就是为什么无论你尝试什么,你都无法遵循他们的指南并安装 Docker。

您可以先检查什么:

  • 验证您的系统(在 chroot 之外)是否正在使用armel或.如果答案是,那么您的命令出错了,您应该使用该选项重试。armhfdpkg --print-architecturearmhfdebootstrap--arch=armhf更新:这就是 OP 的内容,但似乎--foreign也需要,所以这个命令做到了:

    debootstrap --foreign --arch=armhf stretch d
    
  • 更新:验证核心也是一个armhf内核。它是否在某处armv7(可能armv7l)说了某事?或仅armarmv6-某物?可能只有内核不正确。如果那不是armv7,你应该考虑改变它。否则,这是一个无法解释的错误debootstrap,因为我无法在其他armhf平台上重现它。


解决这个问题的历史想法如下:

还有什么可以也许,但无论如何都不容易,要做别的事:

  • 另一种解决方案(如果它确实支持)则超出了此处的困难范围,armhf即完成安装 Docker 所需的缺少的多架构库。
  • Debian 确实为目前尚未发布的未来 Debian 10 提供了同等版本docker.io包,可用于armel(但它告诉:“目前不支持在非 amd64 主机上使用 docker.io”)。所以可以想象,当 Raspbian 推出时,这个包就可以使用了。无论如何,不​​要指望尖端版本。
  • 可能可以从源代码中重建该armel架构的 Docker 包。无论如何,这需要您可能还不具备的知识。

即使您安装了它,也armel请考虑您尝试从中提取的任何内容码头工人中心将会不兼容:如果 Docker 不提供,armel那么armel生态系统就根本不存在。

相关内容