1.更换源
vi /etc/apt/sources.list
deb https://mirror.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main restricted universe multiverse deb https://mirror.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse deb https://mirror.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse deb https://mirror.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse deb https://mirror.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-proposed main restricted universe multiverse
2.安装依赖
sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common
这个命令后面跟了几个软件包的名字,它们分别是:
- apt-transport-https:这个软件包允许apt使用HTTPS协议来访问软件源。
- ca-certificates:这个软件包提供了一些受信任的证书颁发机构的证书,用来验证HTTPS连接的安全性。
- curl:这个软件包提供了一个命令行工具,用来发送和接收网络数据。
- gnupg-agent:这个软件包提供了一个后台程序,用来管理GnuPG密钥和密码。
- software-properties-common:这个软件包提供了一些工具,用来管理软件源和PPA(Personal Package Archive)。
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
这个命令是用来从网络上下载并添加Docker的官方GPG密钥的,它使用了curl和apt-key两个工具。
这个命令的各个部分的含义如下:
- curl -fsSL:这是curl工具的参数,它们分别表示:
- f:如果HTTP请求失败,不显示错误信息。
- s:静默模式,不显示进度条或错误信息。
- S:如果发生错误,显示错误信息。
- L:如果HTTP请求被重定向,自动跟随新的地址。
- https://download.docker.com/linux/ubuntu/gpg:这是Docker的官方GPG密钥的地址,curl会从这个地址下载密钥。
- |:这是一个管道符号,它表示将前面命令的输出作为后面命令的输入。
- sudo apt-key add -:这是apt-key工具的命令,它表示以管理员权限添加一个新的密钥到信任列表中。-表示从标准输入读取密钥。
这个命令的意思就是使用curl工具从Docker网站下载GPG密钥,并通过管道符号传递给apt-key工具添加到信任列表中。
sudoadd-apt-repository \ "deb [arch=arm64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
这个命令是用来添加一个APT软件源到Ubuntu系统中的,它使用了add-apt-repository工具,它是一个用来管理APT软件源的工具。
这个命令后面跟了一个软件源的地址,它由以下几部分组成:
- deb:这表示这是一个二进制软件包的源,而不是源代码的源。
- [arch=arm64]:这表示这个软件源只适用于arm64架构的系统,如果的系统不是arm64架构的,需要修改这个参数。
- https://download.docker.com/linux/ubuntu:这是Docker官方提供的软件源的地址,可以从这里下载Docker相关的软件包。
- $(lsb_release -cs):这是一个命令替换符号,它表示执行lsb_release -cs命令,并将其输出作为参数。lsb_release -cs命令会显示Ubuntu系统的发行代号,比如focal或hirsute。使用这个命令可以让自动匹配当前系统版本对应的软件源。
- stable:这表示使用稳定版的Docker软件包,而不是测试版或开发版。
这个命令的意思就是使用add-apt-repository工具添加一个适用于arm64架构和当前Ubuntu版本的Docker稳定版软件源到系统中。
sudo apt-get install docker-ce docker-ce-cli containerd.io
Docker Engine是一个用于创建和运行容器的软件,docker-ce-cli表示社区版的Docker Engine命令行界面
3.验证
docker pull hello-world docker run hello-world
如果你看到以下信息,说明你的安装是正确的:
Hello from Docker! This message shows that your installation appears to be working correctly.
报错1
dpkg: error processing package docker-ce (--configure): installed docker-ce package post-installation script subprocess returned error exit status 1 Errors were encountered while processing: docker-ce E: Sub-process /usr/bin/dpkg returned an error code (1)
按以下方式解决,然后重复执行第四步,(这个报错其实是因为内核没有配置好,安装完docker后自动
启动出现了问题,所以才会有这个报错,执行下面操作虽然可以解决问题,但是并没有什么卵用,还是
起不来)
sudo mv /var/lib/dpkg/info/ /var/lib/dpkg/bak/ sudo mkdir /var/lib/dpkg/info/
报错2
could not get initial namespace: no such file or directory
内核没有勾选namespace配置,内核添加如下配置。
CONFIG_NAMESPACES=y
报错3
failed to add the host (vethefe9f2b) <=> sandbox (veth4c4b0c0) pair interfaces: operation not supported.
内核添加 veth 的配置
报错4
kernel 新增了overlay fs config , 单独刷boot.img 验证
不过改完这个, 命令查看lsblk 会发现/dev/mmcblk1p8 变成了/dev/mmcblk0p8 , 如果通过这个挂载分区的记得要根据lsblk具体的名字来。