如何哪一步安装有问题,直接把报错复制拿去问ai就行了。
下面是从零开始在 Ubuntu 云服务器 上安装 Docker 的完整流程,针对国内网络环境做了优化(使用阿里云镜像),并逐条解释每个命令的作用。
前置说明
-
为什么用阿里云? Docker 官方服务器在国外,国内直接访问经常超时或连接重置,所以用阿里云镜像源。
-
适用系统:Ubuntu 20.04/22.04/24.04 等主流版本。
步骤一:更新系统并安装依赖
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
| 命令 | 作用 |
|---|---|
sudo |
以管理员权限执行后面的命令 |
apt-get update |
更新本地软件包索引(让系统知道哪些软件有哪些版本) |
apt-get install |
安装软件包 |
-y |
自动回答 "Yes",不需要手动确认 |
ca-certificates |
SSL 证书工具,用来验证 HTTPS 网站的真实性 |
curl |
命令行下载工具,用来从网络下载文件 |
gnupg |
GPG 密钥管理工具,用来验证软件包签名 |
步骤二:创建密钥存放目录
sudo install -m 0755 -d /etc/apt/keyrings
| 部分 | 含义 |
|---|---|
install |
创建目录并设置权限(比 mkdir 更专业) |
-m 0755 |
设置权限为 rwxr-xr-x(所有者读写执行,其他人读执行) |
-d |
只创建目录,不创建文件 |
/etc/apt/keyrings |
存放第三方软件源 GPG 密钥的标准目录 |
步骤三:添加 Docker 的 GPG 密钥
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor --yes -o /etc/apt/keyrings/docker.gpg
这是一个管道命令,分两部分执行:
左边:curl 下载密钥
| 参数 | 含义 |
|---|---|
-f |
如果服务器返回错误(如 404),curl 直接失败,不继续 |
-s |
静默模式,不显示下载进度条 |
-S |
但如果有错误,仍然显示错误信息 |
-L |
跟随重定向(如果 URL 被跳转到新地址) |
中间:| 管道
把左边 curl 的输出(下载到的密钥文本)直接传给右边的 gpg 命令处理。
右边:gpg 处理密钥
| 参数 | 含义 |
|---|---|
--dearmor |
将 ASCII 格式的密钥转换成二进制格式(.gpg 文件需要二进制) |
--yes |
自动确认所有提示,不询问 |
-o |
指定输出文件路径 |
/etc/apt/keyrings/docker.gpg |
最终保存的密钥文件位置 |
GPG 密钥的作用:告诉系统 "这个软件源是可信的 Docker 官方源",防止你下载到被篡改的假冒软件。
步骤四:添加 Docker 软件源
sudo rm -f /etc/apt/sources.list.d/docker.list
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 rm -f /etc/apt/sources.list.d/docker.list
- 如果之前配置失败过,先删掉旧的错误文件,避免冲突。
第二行:写入新源(拆解来看)
| 片段 | 含义 |
|---|---|
deb |
表示这是一个二进制软件包源(deb-src 是源码源) |
[arch=...] |
指定 CPU 架构(如 amd64、arm64),自动匹配你的服务器 |
$(dpkg --print-architecture) |
自动获取当前系统的 CPU 架构 |
signed-by=... |
告诉 apt 用哪个 GPG 文件验证这个源 |
https://mirrors.aliyun.com/... |
阿里云 Docker 镜像地址 |
$(. /etc/os-release && echo "$VERSION_CODENAME") |
自动获取你的 Ubuntu 版本代号(如 jammy、focal) |
stable |
只使用稳定版,不使用测试版 |
管道部分
| 命令 | 作用 |
|---|---|
echo "..." |
输出这一长串文字 |
| sudo tee ... |
把输出写入到文件(tee 兼顾显示和写入,这里配合 > /dev/null 不显示) |
> /dev/null |
丢弃屏幕输出,只保留文件写入 |
文件位置 :
/etc/apt/sources.list.d/是放第三方软件源的地方,比直接改/etc/apt/sources.list更安全、更清晰。
步骤五:更新索引并安装 Docker
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
| 软件包 | 作用 |
|---|---|
docker-ce |
Docker 引擎本体(Community Edition,社区版) |
docker-ce-cli |
Docker 命令行客户端(docker 命令) |
containerd.io |
容器运行时,Docker 底层真正运行容器的组件 |
docker-buildx-plugin |
Docker 构建扩展,支持多平台构建 |
docker-compose-plugin |
Docker Compose 插件(管理多容器应用) |
步骤六:启动 Docker 并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
| 命令 | 作用 |
|---|---|
systemctl start docker |
立即启动 Docker 服务 |
systemctl enable docker |
设置开机时自动启动 Docker |
步骤七:验证安装
docker --version
sudo docker run hello-world
-
docker --version:查看版本,确认安装成功。 -
docker run hello-world:拉取并运行测试镜像,如果看到 "Hello from Docker!" 就大功告成了。
步骤八:配置国内镜像加速器(国内服务器必需)
因为 Docker Hub 官方仓库在国外,直接拉取镜像会超时,必须配置加速器:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://hub-mirror.c.163.com",
"https://mirror.ccs.tencentyun.com"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
| 命令 | 作用 |
|---|---|
mkdir -p /etc/docker |
创建 Docker 配置目录(-p 表示如果已存在不报错) |
tee <<-'EOF' ... EOF |
一种"Here Document"写法,把多行文本写入文件 |
daemon.json |
Docker 守护进程的配置文件 |
registry-mirrors |
镜像仓库镜像地址列表,拉镜像时会优先从这些地址下载 |
daemon-reload |
让 systemd 重新读取配置 |
restart docker |
重启 Docker 使加速器生效 |
完整流程(可直接复制执行)
# 1. 更新系统并安装依赖
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
# 2. 创建密钥目录
sudo install -m 0755 -d /etc/apt/keyrings
# 3. 添加阿里云 GPG 密钥
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor --yes -o /etc/apt/keyrings/docker.gpg
# 4. 添加阿里云 Docker 源
sudo rm -f /etc/apt/sources.list.d/docker.list
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
# 5. 安装 Docker
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 6. 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
# 7. 验证
docker --version
sudo docker run hello-world
# 8. 配置镜像加速器(国内必需)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://hub-mirror.c.163.com",
"https://mirror.ccs.tencentyun.com"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker