2 分钟阅读 次阅读

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 查看当前能安装的版本

  1. 查看 Docker 版本

使用 apt-cache policy 命令可以列出源中所有可用的版本版本及其状态。

apt-cache policy docker-ce
  • Installed: 当前安装的版本。
  • Candidate: 默认将要安装的版本。
  • Version table: 列出所有可供选择的版本号。
  1. 查看 Docker Compose 版本

现在的 Docker Compose 通常作为插件(V2)安装,也可以查看其版本:

apt-cache policy docker-compose-plugin

3.3 安装 Docker 和 Docker Compose

  1. 安装最新版本(推荐)

直接执行以下命令将安装最新的稳定版:

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
  1. 安装特定版本

如果你从“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
  1. 配置权限(免 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)

二进制安装不会自动生成服务文件,你需要手动创建一个。

  1. 创建服务文件sudo nano /etc/systemd/system/docker.service

  2. 粘贴以下内容

    [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
    
  3. 启动并设置自启

    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 ``` 如上,列出空的容器列表不报错。

留下评论