Docker 安装全攻略:Ubuntu 24.04/22.04 从零部署 Docker Engine + Compose(2026 最新版)
Docker 安装全攻略
从一台干净的 Ubuntu 服务器开始,使用 Docker 官方 APT 仓库安装 Docker Engine、Buildx 与 Compose Plugin,再用一个真实 Nginx 容器完成第一次部署。
Docker 最迷人的地方,不是“把程序装进容器”这么简单,而是它把运行环境、依赖、启动方式一起变成了可以复制的交付单元。服务器换了、系统重装了,只要镜像和 Compose 文件还在,服务就能快速重建。
开始前:确认系统环境
本文以 Ubuntu 24.04 LTS / 22.04 LTS 64 位服务器为主。Docker 官方当前还支持 Ubuntu 26.04 LTS,并支持 amd64、arm64 等多种架构。
cat /etc/os-release
uname -m
whoami一台全新的 Ubuntu VPS、可以使用 root,或者当前账号拥有 sudo 权限。至少预留 2 GB 磁盘空间用于 Docker 本身,实际空间取决于以后拉取的镜像。
清理可能冲突的旧软件包
Ubuntu 软件源里的 docker.io、旧版 docker-compose、Podman 兼容包以及独立安装的 containerd/runc,可能与 Docker 官方软件包发生冲突。先执行下面的清理命令最稳妥。
sudo apt remove $(dpkg --get-selections \
docker.io docker-compose docker-compose-v2 docker-doc \
docker-buildx podman-docker containerd runc | cut -f1)如果 APT 提示部分软件包未安装,这是正常情况。清理命令不会自动删除你原来位于 /var/lib/docker 的镜像、容器和卷数据。
添加 Docker 官方 APT 仓库
相比网上常见的一键脚本,生产服务器更建议走官方 APT 仓库:来源清晰、后续升级方便,而且 Docker Engine、CLI、Buildx 和 Compose 可以一起由包管理器维护。
sudo apt update
sudo apt install -y 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
sudo tee /etc/apt/sources.list.d/docker.sources >/dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
sudo apt update安装 Docker Engine + Compose
现在安装官方完整组件。这里的 docker-compose-plugin 就是现代 Compose V2,因此以后使用的是 docker compose,不是旧教程里的 docker-compose。
sudo apt install -y \
docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugindocker-ce
Docker Engine 核心守护进程,真正负责创建和运行容器。
docker-ce-cli
你每天会使用的 docker ps、docker run 等命令行客户端。
containerd.io
Docker 使用的底层容器运行时组件。
Buildx + Compose
现代镜像构建与多容器编排能力。
验证 Docker 是否真正运行
先看服务,再检查版本,最后运行 Docker 官方的 hello-world 测试镜像。
sudo systemctl status docker --no-pager
docker --version
docker compose version
sudo docker run --rm hello-world此时 Docker 已经可以正式使用。Ubuntu / Debian 系列安装完成后,Docker 服务通常会自动启动。
可选:让普通用户无需 sudo
默认情况下 Docker Socket 由 root 管理,所以普通账号执行 Docker 命令时常常需要 sudo。你可以把当前用户加入 docker 用户组。
sudo groupadd docker 2>/dev/null || true
sudo usermod -aG docker $USER
newgrp docker
docker run --rm hello-worldDocker 官方明确提醒:加入 docker 用户组基本等同于获得 root 级权限。多人共用服务器时不要随意给不可信用户加入该组;安全要求更高可以研究 Docker Rootless 模式。
第一个实战:用 Compose 启动 Nginx
Docker 装好以后,最值得马上掌握的是 Compose。我们创建一个极简 Nginx 服务,把宿主机的 8088 端口映射到容器 80 端口。
mkdir -p ~/docker-demo
cd ~/docker-demo新建 compose.yaml:
services:
web:
image: nginx:alpine
container_name: docker-demo-nginx
restart: unless-stopped
ports:
- "8088:80"启动:
docker compose up -d
docker compose ps
curl http://127.0.0.1:8088如果云厂商安全组或系统防火墙没有放行 8088,外网会打不开;本机 curl 127.0.0.1:8088 正常则说明容器本身没有问题。
停止并删除容器:
docker compose down安装完成后,建议记住这 10 条命令
| 命令 | 作用 |
|---|---|
docker ps | 查看正在运行的容器 |
docker ps -a | 查看全部容器 |
docker images | 查看本地镜像 |
docker logs -f 容器名 | 实时查看容器日志 |
docker restart 容器名 | 重启容器 |
docker exec -it 容器名 sh | 进入容器 Shell |
docker stats | 查看容器 CPU / 内存占用 |
docker compose up -d | 后台启动 Compose 项目 |
docker compose down | 停止并删除 Compose 容器/网络 |
docker system df | 查看 Docker 磁盘占用 |
生产环境中最容易忽略的两件事
端口发布与 UFW
Docker 官方提醒:容器端口发布后,流量可能绕过部分 UFW / firewalld 规则。生产环境不要只凭 UFW 输出判断端口是否安全,应该同时规划云安全组和 Docker 的 DOCKER-USER 链。
容器日志与磁盘空间
默认 json-file 日志长期运行可能越来越大。正式服务器应考虑日志轮转或切换为具备轮转能力的日志驱动。
Docker 更新与卸载
更新 Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin只卸载软件包
sudo apt purge docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras卸载 Docker 软件包不会自动删除镜像、容器和卷。如果你执行 sudo rm -rf /var/lib/docker /var/lib/containerd,Docker 本地数据会被永久删除。正式服务器先备份。
一键脚本能不能用?
Docker 官方确实提供 get.docker.com。它非常适合临时测试机、实验环境或自动初始化场景,但官方明确不建议把 convenience script 作为生产环境首选安装方式,因为它会自动做较多系统修改,并默认安装最新稳定版。
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh ./get-docker.sh --dry-run
sudo sh get-docker.sh长期运行网站、数据库、面板的 VPS:用本文前面的官方 APT 仓库。临时开发机:一键脚本可以节省时间。
安装完成后的检查清单
docker --version能显示版本docker compose version能显示 Compose V2systemctl status docker显示 active (running)docker run --rm hello-world能成功运行- 清楚 Docker 发布端口与系统防火墙的关系
- 生产服务的数据目录已经使用 Volume / Bind Mount 持久化