如何在Debian Chroot中安装Docker?

塞珀罗

我有一个运行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'”。

更新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 architechture Armhf。

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

UPDATE4解决方案

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

AB

TL; DR:您无法docker-cearmel体系结构安装Docker的软件包,但是您的系统(作为Rasberry Pi 2)应该始终在运行armhf,因此您的设置有问题。

Docker对Debian要求

操作系统要求

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

  • 克星10
  • 弹力9(稳定)/覆盆子弹力

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

您可以先检查什么:

  • 验证您的系统(chroot环境之外)使用armelarmhfdpkg --print-architecture如果答案是肯定的,armhf则您的debootstrap命令出错了,您应该使用该--arch=armhf选项再试一次UPDATE:这是用于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 Hub提取的任何东西都是不兼容的:如果Docker不提供armel机会,那么根本就不会有armel生态系统。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Debian测试中安装libgnomeprint?

来自分类Dev

如何在debian中从USB安装Ubuntu?

来自分类Dev

如何在Debian中安装Flex(lex)

来自分类Dev

如何在Kali / Debian中安装GLIBC?

来自分类Dev

如何在Debian中安装sfx文件

来自分类Dev

如何在Debian中安装R Vennerable?

来自分类Dev

如何在Debian中安装R plotly?

来自分类Dev

如何在Debian中安装npgsql?

来自分类Dev

如何在Debian Chroot中放弃特权?

来自分类Dev

如何在Debian Wheezy Docker映像上安装pgrep / pkill

来自分类Dev

如何在Debian Wheezy上安装gitosis?

来自分类Dev

如何在Debian 6上安装zlib?

来自分类Dev

如何在Debian上安装Aurora(Firefox)?

来自分类Dev

如何在Debian上安装Gnome 3.10

来自分类Dev

如何在Debian Jessie上安装ffmpeg?

来自分类Dev

如何在Debian上安装真正的Firefox?

来自分类Dev

如何在Debian上安装Ubuntu / Mint?

来自分类Dev

如何在Debian Wheezy上安装gitosis?

来自分类Dev

如何在Debian Linux上安装APT

来自分类Dev

如何在Debian Sid上安装Uglify

来自分类Dev

如何在debian sid上安装mplayer?

来自分类Dev

如何在Debian上安装CCTLLAPP?

来自分类Dev

如何在Debian 9上安装utorrent?

来自分类Dev

如何在Debian Stretch上安装Flash?

来自分类Dev

如何在Debian上安装MIMEDefang?

来自分类Dev

如何在Debian上安装Musescore 3?

来自分类Dev

如何在Debian 8上安装libssl?

来自分类Dev

如何在我的Debian上安装npm?

来自分类Dev

如何在 Debian 上安装 containerd?