docker在arm64架构ubuntu系统的安装

卸载可能存在的旧版本

bash 复制代码
sudo apt remove docker docker-engine docker-ce docker-io

安装依赖使apt可通过HTTPS下载包

bash 复制代码
sudo apt update && apt install -y apt-tranport-https ca-certificates curl 
software-properties-common

apt-transport-https用于支持通过HTTPS协议下载软件包,ca-certificates是用于管理SSL/TLS证书的软件包,software-properties-common 是一个用于管理软件源的工具

添加docker密钥

阿里云docker源

bash 复制代码
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

sudo apt-key add - 命令将GPG密钥添加到apt软件包管理器的受信任密钥列表中,末尾的-表示从标准输入中读取密钥。-fsSL是curl命令的选项,-f在服务器错误时静默失败,-s静默模式,不显示进度或错误消息,-S如果有错误则显示错误信息,-L跟踪重定向

官方docker源

bash 复制代码
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

添加对应的docker源(和上一步一致)

阿里云

bash 复制代码
sudo add-apt-repository "deb [arch=arm64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

官方源

bash 复制代码
sudo add-apt-repository "deb [arch=arm64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

add-apt-repository: 这个命令用于添加一个软件源(repository)到 Ubuntu 的软件仓库列表中

"deb [arch=arm64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable": 这是要添加的软件源的描述。

  • deb 表示这是一个 Debian 软件包仓库。
  • [arch=arm64] 表示这个软件源适用于 arm64 架构的处理器。
  • https://download.docker.com/linux/ubuntu 是软件源的 URL。
  • $(lsb_release -cs) 是 Ubuntu 的发行版代号,用于指定要添加软件源的 Ubuntu 版本。
  • stable 指定所添加的软件源的版本为稳定版。

因此,这个命令将会添加一个适用于 arm64 架构的 Docker CE 的软件包仓库,该仓库的 URL 为 https://download.docker.com/linux/ubuntu,软件源版本为稳定版,并根据当前 Ubuntu 的发行版代号自动选择正确的仓库版本。

安装docker

bash 复制代码
sudo apt update && apt install -y docker-ce

配置镜像仓库

bash 复制代码
mkdir /etc/docker
cat > /etc/docker/daemon.json << EOF
{
    "registry-mirrors": [
        "https://docker.mirrors.ustc.edu.cn/"
    ]
}
EOF
# 设置完成后重启
sudo systemctl daemon-reload
sudo systemctl restart docker

cat > /etc/docker/daemon.json << EOF这个命令将会把下面的文本块写入 /etc/docker/daemon.json 文件中,<< EOF 告诉 shell 接下来的文本块作为输入,并以 EOF 结束。

除了上述修改方式以外,还可以直接编辑/lib/systemd/system/docker.service 文件,修改启动命令的命令选项,指定镜像仓库参数(---registry-mirror):


其他

使用docker命令时可能会报下面的错误:

bash 复制代码
docker pull nginx:1.14 [22:29:13]
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/images/create?fromImage=nginx&tag=1.14": dial unix /var/run/docker.sock: connect: permission denied

这个错误提示显示了 Docker 客户端无法连接到 Docker 守护进程,因为没有足够的权限。

通常情况下,只有具有管理员权限的用户才能访问 Docker 守护进程。如果您是普通用户,可以尝试以下方法解决这个问题:

将用户添加到 docker 用户组中:

bash 复制代码
sudo usermod -aG docker $USER

这个命令将当前用户添加到 docker 用户组中,这个用户组拥有访问 Docker 守护进程的权限。注意,这个命令需要以管理员权限运行。

修改完成后需要退出终端并重新登陆。

相关推荐
Sheffield6 小时前
Docker的跨主机服务与其对应的优缺点
linux·网络协议·docker
Lee川6 小时前
深度拆解:基于面向对象思维的“就地编辑”组件全模块解析
javascript·架构
勤劳打代码6 小时前
Flutter 架构日记 — 状态管理
flutter·架构·前端框架
子兮曰11 小时前
后端字段又改了?我撸了一个 BFF 数据适配器,从此再也不怕接口“屎山”!
前端·javascript·架构
Sheffield14 小时前
Alpine是什么,为什么是Docker首选?
linux·docker·容器
卓卓不是桌桌14 小时前
如何优雅地处理 iframe 跨域通信?这是我的开源方案
javascript·架构
Qlly14 小时前
DDD 架构为什么适合 MCP Server 开发?
人工智能·后端·架构
马艳泽14 小时前
win10下运行Start Broker and Proxy报错解决
docker
用户881586910911 天前
AI Agent 协作系统架构设计与实践
架构
鹏北海1 天前
Qiankun 微前端实战踩坑历程
前端·架构