3568 docker 适配
1 内核配置
docker 需要开启一些内核选项,可以使用这个方式检查:
- 运行 Docker 官方提供的检查脚本
curl -L https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh > check-config.sh
chmod +x check-config.sh
./check-config.sh
修改配置后,烧写并再次运行脚本确认。
如果系统中有加载ko,修改配置后可能要更新ko,原有的ko可能失效导致空指针问题。
脚本还会检测网络配置,具体配置方式见下文:
2 网络配置
vim /etc/sysctl.conf 添加如下内容
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
3 方式1:从软件源安装Docker
3.1 准备工作:添加 Docker 官方软件源
在查看版本之前,建议先配置 Docker 的官方软件源,这样可以获取到比 Ubuntu 默认源更新的版本。
-
更新包索引并安装依赖:
sudo apt update sudo apt install ca-certificates curl gnupg lsb-release - 添加 GPG 密钥:
- 官方
sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg- 由于网络问题,无法使用官方密钥的,可以使用阿里云密钥
# 1. 下载并转换 GPG 密钥(使用阿里云镜像) curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # 2. 如果之前生成了空的 docker.gpg,可能需要先删除它 # sudo rm /etc/apt/keyrings/docker.gpg - 添加软件源(注意 arch=arm64):
- 官方
echo \ "deb [arch=arm64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null - 阿里云
echo \ "deb [arch=arm64 signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 官方
- 再次更新:
sudo apt update
3.2 查看当前能安装的版本
- 查看 Docker 版本
使用 apt-cache policy 命令可以列出源中所有可用的版本版本及其状态。
apt-cache policy docker-ce
- Installed: 当前安装的版本。
- Candidate: 默认将要安装的版本。
- Version table: 列出所有可供选择的版本号。
- 查看 Docker Compose 版本
现在的 Docker Compose 通常作为插件(V2)安装,也可以查看其版本:
apt-cache policy docker-compose-plugin
3.3 安装 Docker 和 Docker Compose
- 安装最新版本(推荐)
直接执行以下命令将安装最新的稳定版:
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
- 安装特定版本
如果你从“Version table”中选中了某个特定版本(例如 5:24.0.5-1~ubuntu.20.04~focal),可以指定安装:
# 替换 VERSION_STRING 为你查到的版本号
VERSION_STRING=5:24.0.5-1~ubuntu.20.04~focal
sudo apt install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-compose-plugin
- 配置权限(免 sudo)
为了方便后续开发,建议将当前用户加入 docker 组:
sudo usermod -aG docker ${USER}
注意:执行完此命令后,需要注销并重新登录,或者执行
newgrp docker使设置生效。
3.4 验证安装
运行以下命令确认安装成功:
- 查看 Docker 服务状态:
sudo systemctl status docker - 测试运行容器:
docker run hello-world - 查看 Docker Compose 版本:
docker compose version(注意 V2 版本的命令是docker compose中间没有连字符)。
4 方式2:使用二进制安装
4.1 下载必要的二进制文件
需要两个核心文件。请在官方 aarch64 发布页寻找:
- Docker 引擎:
docker-28.5.0.tgz(主程序) - Docker Compose:从 Docker Compose GitHub Releases 下载
docker-compose-linux-aarch64(版本 v2.40.0)
4.2 安装 Docker 28.5.0
在终端执行以下操作:
# 1. 解压主程序包
tar -xzvf docker-28.5.0.tgz
# 2. 将二进制文件移动到系统目录
sudo cp docker/* /usr/bin/
# 3. 如果需要 rootless 功能,再解压 extras 包并覆盖到同目录
tar -xzvf docker-rootless-extras-28.5.0.tgz
sudo cp docker-rootless-extras/* /usr/bin/
4.3 安装 Docker Compose v2.40
Docker Compose V2 现在作为 Docker 的插件运行,建议安装在插件目录:
# 1. 创建插件目录
mkdir -p ~/.docker/cli-plugins
# 2. 将下载的二进制文件移动并重命名
# 假设你下载的文件名为 docker-compose-linux-aarch64
mv docker-compose-linux-aarch64 ~/.docker/cli-plugins/docker-compose
# 3. 赋予执行权限
chmod +x ~/.docker/cli-plugins/docker-compose
# 4. 验证版本
docker compose version
注:这样安装后,使用命令是 docker compose(中间有空格)。
4.4 配置开机自启 (Systemd)
二进制安装不会自动生成服务文件,你需要手动创建一个。
-
创建服务文件:
sudo nano /etc/systemd/system/docker.service -
粘贴以下内容:
[Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target firewalld.service Wants=network-online.target [Service] Type=notify ExecStart=/usr/bin/dockerd ExecReload=/bin/kill -s HUP $MAINPID LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity TasksMax=infinity TimeoutStartSec=0 Delegate=yes KillMode=process Restart=on-failure StartLimitBurst=3 StartLimitInterval=60s [Install] WantedBy=multi-user.target -
启动并设置自启:
sudo systemctl daemon-reload sudo systemctl enable docker sudo systemctl start docker
4.5 验证安装结果
# 检查 Docker 版本
docker version --format ''
# 检查 Compose 版本
docker compose version
# 运行 "Hello World" 容器
docker run hello-world
hello-world容器会自动拉取,可能需要配置镜像源:
5 daemon.json的修改与验证
- 创建配置文件
sudo mkdir -p /etc/docker sudo vim /etc/docker/daemon.json - 填写如下内容
{ "registry-mirrors": [ "https://docker.m.daocloud.io", "https://mirror.baidubce.com", "https://dockerproxy.com" ] } - /etc/docker/daemon.json是Docker的配置,修改后需要重启docker:
sudo systemctl daemon-reload
systemctl restart docker
- docker配置可以用 docker info查看,过滤具体字段:
docker info
6 将当前用户加入 docker 组
sudo usermod -aG docker ${USER}
建议重启以确认生效
- 以普通用户执行指令不报错 ```bash $ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ``` 如上,列出空的容器列表不报错。
留下评论