docker的安装

复制代码

如何哪一步安装有问题,直接把报错复制拿去问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