🐳 Ubuntu 安装 Docker 完整指南

适用系统:Ubuntu 20.04 / 22.04 / 24.04 (x86_64)
更新日期:2026-07-30


目录

  1. 前置检查
  2. 卸载旧版本(如有)
  3. 通过官方仓库安装(推荐)
  4. 安装 Docker Engine
  5. 启动并验证
  6. 非 root 用户运行 Docker
  7. 安装 Docker Compose(可选但推荐)
  8. 配置镜像加速(国内用户强烈推荐)
  9. 常用 Docker 命令速查
  10. 卸载 Docker
  11. 常见问题

1. 前置检查

# 查看系统版本
lsb_release -a

# 检查内核版本(需 >= 3.10)
uname -r

# 确保系统已更新
sudo apt update
sudo apt upgrade -y

硬件要求

项目最低要求推荐
内存512 MB2 GB+
磁盘1 GB 可用10 GB+
内核3.10+5.x+

2. 卸载旧版本(如有)

如果之前装过旧版 Docker(如 docker.io, docker-engine),先清除:

sudo apt remove docker docker-engine docker.io containerd runc

旧版镜像、容器、卷不会自动删除,可稍后手动清理:

sudo rm -rf /var/lib/docker/
sudo rm -rf /var/lib/containerd/

3. 通过官方仓库安装(推荐)

3.1 安装依赖包

sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release

3.2 添加 Docker 官方 GPG 密钥

sudo install -m 0755 -d /etc/apt/keyrings

# 官方源(推荐)
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 如果官方源下载慢,可用中科大镜像
# curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

sudo chmod a+r /etc/apt/keyrings/docker.gpg

3.3 添加 Docker APT 源

echo \
  "deb [arch=$(dpkg --print-architecture) 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

如果 . /etc/os-release; echo "$VERSION_CODENAME" 返回的不是稳定版本名(如 noble, jammy, focal),可以手动替换:

  • Ubuntu 24.04 → noble
  • Ubuntu 22.04 → jammy
  • Ubuntu 20.04 → focal

3.4 更新包索引

sudo apt update

如果报 GPG 错误,尝试安装 apt-transport-https:

sudo apt install -y apt-transport-https

4. 安装 Docker Engine

# 安装最新版
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 或安装指定版本(先查询可用版本)
# apt-cache madison docker-ce
# sudo apt install -y docker-ce=5:25.0.0-1~ubuntu.24.04~noble docker-ce-cli=5:25.0.0-1~ubuntu.24.04~noble containerd.io

5. 启动并验证

# 启动 Docker 服务
sudo systemctl start docker

# 设置开机自启
sudo systemctl enable docker

# 检查运行状态
sudo systemctl status docker

# 查看版本
docker --version
docker compose version

# 运行测试容器
sudo docker run hello-world

看到类似以下输出即安装成功:

Hello from Docker!
This message shows that your installation appears to be working correctly.

6. 非 root 用户运行 Docker

默认需要 sudo 才能运行 Docker。把当前用户加入 docker 组可免 sudo

# 创建 docker 组(一般已存在)
sudo groupadd docker

# 将当前用户加入 docker 组
sudo usermod -aG docker $USER

# 使组变更生效(二选一)
newgrp docker        # 当前终端生效
# 或重新登录 / 注销后重新 SSH

验证:

docker run hello-world

⚠️ 安全说明docker 组等同于 root 权限。加入该组的用户有完整 Docker 控制权,仅授予可信用户。


7. 安装 Docker Compose(可选但推荐)

Docker Compose 用于定义和运行多容器应用。

方式一:Docker Compose Plugin(已随 docker-ce 安装)

docker compose version    # 注意是 compose(无横杠)

方式二:独立二进制安装

# 下载最新版
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.29.0/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose

# 赋予执行权限
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose

# 验证
docker compose version

📌 Docker Compose V2 使用 docker compose(空格),V1 使用 docker-compose(横杠)。


8. 配置镜像加速(国内用户强烈推荐)

Docker 官方镜像下载慢,配置镜像加速器可以大幅提速。

创建/修改 daemon.json

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://docker.1ms.run",
    "https://docker.xuanyuan.me",
    "https://docker.m.daocloud.io"
  ]
}
EOF

以上镜像源可能随时间失效,如果发现拉取失败,可以搜索最新的可用镜像源替换。

重启 Docker 使配置生效

sudo systemctl daemon-reload
sudo systemctl restart docker

验证镜像加速是否生效

docker info | grep -A 5 "Registry Mirrors"

输出应显示配置的镜像地址。


9. 常用 Docker 命令速查

镜像管理

docker images                    # 列出本地镜像
docker pull nginx:latest         # 拉取镜像
docker rmi nginx                 # 删除镜像
docker build -t myapp:1.0 .      # 从 Dockerfile 构建镜像

容器管理

docker ps                        # 列出运行中的容器
docker ps -a                     # 列出所有容器(含已停止的)
docker run -d -p 8080:80 nginx   # 后台运行 nginx,映射端口
docker stop <容器ID>              # 停止容器
docker start <容器ID>             # 启动已停止的容器
docker rm <容器ID>                # 删除容器
docker logs -f <容器ID>           # 查看容器日志(持续跟踪)
docker exec -it <容器ID> bash     # 进入容器终端

系统管理

docker info                      # Docker 系统信息
docker system df                 # 磁盘占用
docker system prune -a           # 清理所有未使用的镜像/容器/网络

Docker Compose

docker compose up -d             # 后台启动所有服务
docker compose down              # 停止并移除所有容器
docker compose logs -f           # 查看所有服务日志
docker compose ps                # 查看服务状态
docker compose restart           # 重启所有服务

10. 卸载 Docker

如需完全卸载 Docker:

# 卸载 Docker 包
sudo apt purge -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

# 删除镜像、容器、卷等(⚠️ 不可恢复)
sudo rm -rf /var/lib/docker/
sudo rm -rf /var/lib/containerd/

# 删除配置和源
sudo rm -rf /etc/docker
sudo rm /etc/apt/sources.list.d/docker.list
sudo rm /etc/apt/keyrings/docker.gpg

# 删除 docker 组(可选)
sudo groupdel docker

11. 常见问题

Q: permission denied 无法连接 Docker 守护进程?

原因:当前用户不在 docker 组,或 Docker 服务未运行。

解决

# 确保服务运行
sudo systemctl start docker

# 或使用 sudo 运行
sudo docker ps

# 或加入 docker 组(见第 6 节)
sudo usermod -aG docker $USER

Q: 拉取镜像超时 / 非常慢?

原因:国内访问 Docker Hub 受限。

解决:配置镜像加速器(见第 8 节)。

Q: Cannot connect to the Docker daemon

# 检查服务状态
sudo systemctl status docker

# 启动服务
sudo systemctl start docker

# 如果是 WSL2 环境,尝试
sudo service docker start

Q: WSL2 上 Docker 注意事项?

如果你是在 WSL2 (Windows Subsystem for Linux) 上安装:

  1. 推荐方案:Windows 上安装 Docker Desktop(启用 WSL2 后端),然后在 WSL2 Ubuntu 中直接使用
  2. 纯 WSL2 方案:按本指南直接安装 Docker Engine
  3. 确保 WSL2 内核是最新的:wsl --update(Windows 端执行)
  4. Docker 服务需手动启动:sudo service docker start(如需开机自启,加到 .bashrc

附录:安装脚本(一键安装)

如果你只需要快速安装,可以运行 Docker 官方一键脚本:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

⚠️ 一键脚本适合快速安装,但不够透明。生产环境建议用 APT 仓库安装。


参考链接

更多推荐