正常 Ubuntu 下安装 Docker 步骤

开始前,我们需要运行以下命令以卸载所有冲突的软件包

bash
1
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

apt-get 可能会报告您未安装这些软件包。

设置 Docker 的 apt 仓库

官方源

bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 添加 Docker 的 GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# 添加软件源信息
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update

阿里源

bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 安装必要的一些系统工具
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

# 信任 Docker 的 GPG 公钥
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# 写入软件源信息
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update

安装 Docker

运行以下命令安装最新版本:

bash
1
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin`

安装特定版本的 Docker Engine,首先列出存储库中可用的版本:

bash
1
2
3
4
5
6
# 列出存储库中可用的版本:
apt-cache madison docker-ce | awk '{ print $3 }'

5:27.5.0-1~ubuntu.24.04~noble
5:27.4.1-1~ubuntu.24.04~noble
...

选择所需版本并安装:

bash
1
2
VERSION_STRING=5:27.5.0-1~ubuntu.24.04~noble
sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin

使用 hello-world 镜像验证是否成功安装

bash
1
sudo docker run hello-world

此命令下载一个测试镜像并在容器中运行它。当容器运行时,它会输出一条确认消息然后退出。
安装结束。

Linux Mint 下遇到的坑

安装正常的 Ubuntu 步骤,在 Linux Mint 下添加 Docker 软件源后,会在 apt-get update 步骤下报错,报错内容如下

shell
1
2
3
4
5
6
忽略:1 https://download.docker.com/linux/ubuntu wilma InRelease
错误:3 https://download.docker.com/linux/ubuntu wilma Release
正在读取软件包列表... 完成
E: 仓库 “https://download.docker.com/linux/ubuntu wilma Release” 没有 Release 文件。
N: 无法安全地用该源进行更新,所以默认禁用该源。
N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。

这是因为部分 Ubuntu 衍生发行版使用的并不是 VERSION_CODENAME 而是 UBUNTU_CODENAME,使用 VERSION_CODENAME 会导致添加错误的 Ubuntu 发行版代号

正常在 Ubuntu 下添加软件源的步骤是这么写的

bash
1
2
3
4
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

这就需要我们在添加软件源时将 VERSION_CODENAME 改成 UBUNTU_CODENAME,上面阿里源同理

阿里源不能直接使用下面的内容

bash
1
2
3
4
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$UBUNTU_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

最后使用 apt-get update 就不会报错了