
在 Ubuntu VPS 上安装和使用 Docker 入门指南
Docker 是全球最流行的容器化平台。在 VPS 上运行 Docker,可以让您在几秒内部署应用程序、轻松扩展系统,并在开发到生产的所有阶段保持一致的环境。本指南将从安装基础到实际使用,带您全面了解 Docker。
目录
什么是 Docker?
Docker 是一个开源平台,用于在容器中构建、分发和运行应用程序。容器是一种轻量级、隔离的环境,将应用程序与其所有依赖项打包在一起。
三个核心概念:
- 镜像 (Image) — 创建容器的只读模板(蓝图)
- 容器 (Container) — 从镜像创建的运行实例
- 仓库 (Registry) — 存储镜像的地方(如 Docker Hub)
为什么在 VPS 上使用 Docker?
传统 VPS 应用部署面临依赖冲突、扩展困难和环境不一致等问题。Docker 可以解决所有这些问题:
| 传统问题 | Docker 的解决方案 |
|---|---|
| 应用程序间依赖冲突 | 每个容器拥有完全隔离的环境 |
| 复杂的部署流程 | 使用 docker run 或 docker compose up 一键部署 |
| 扩展困难 | 10 秒内启动新容器 |
| "在我机器上能运行"问题 | 所有阶段环境完全一致 |
| 回滚痛苦 | 即时切换镜像版本 |
系统要求
安装 Docker 前,请确认您的 VPS 满足以下规格:
| 组件 | 最低要求 | 推荐配置 |
|---|---|---|
| 操作系统 | Ubuntu 20.04 LTS | Ubuntu 22.04 LTS 或更新版本 |
| 内存 | 1 GB | 2 GB 或以上 |
| 存储 (SSD) | 10 GB 可用空间 | 20 GB 或以上 |
| CPU | 1 vCore | 2 vCore 或以上 |
| 访问权限 | SSH sudo 权限 | 非 root 的 sudo 用户 |
在 Ubuntu 上安装 Docker
方法一:通过 apt 安装(最简单)
# 1. 更新软件包列表
sudo apt update
# 2. 安装 Docker
sudo apt install -y docker.io
# 3. 启用并启动 Docker
sudo systemctl enable --now docker
# 4. 验证 Docker 运行状态
sudo systemctl status docker
# 5. 将当前用户添加到 docker 组(避免每次使用 sudo)
sudo usermod -aG docker $USER
# 6. 重新登录后测试
docker run hello-world
方法二:安装 Docker CE(最新版本)
# 安装依赖
sudo apt install -y ca-certificates curl gnupg
# 添加 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
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 添加 Docker 仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list
# 安装 Docker CE
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
docker --version 和 docker compose version 确认安装成功。
Docker 基础命令
最常用的 Docker 命令汇总:
| 命令 | 用途 | 示例 |
|---|---|---|
docker pull | 从仓库下载镜像 | docker pull nginx:latest |
docker run | 创建并运行容器 | docker run -d -p 80:80 nginx |
docker ps | 列出运行中的容器 | docker ps -a(显示全部) |
docker stop | 停止容器 | docker stop my-container |
docker rm | 删除容器 | docker rm my-container |
docker exec | 在运行中的容器执行命令 | docker exec -it my-nginx bash |
docker logs | 查看容器日志 | docker logs -f my-container |
示例:运行 Nginx Web 服务器
# 在 8080 端口运行 Nginx
docker run -d --name my-nginx -p 8080:80 nginx:alpine
# 测试
curl http://localhost:8080
# 查看日志
docker logs my-nginx
# 停止并删除
docker stop my-nginx && docker rm my-nginx
Docker Compose 多容器管理
Docker Compose 允许通过单个 docker-compose.yml 文件定义和管理多容器应用程序。
示例:WordPress + MySQL + Redis 技术栈
version: '3.8'
services:
db:
image: mysql:8.0
restart: always
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: wordpress
volumes:
- db_data:/var/lib/mysql
wordpress:
image: wordpress:latest
restart: always
depends_on:
- db
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: secret
redis:
image: redis:alpine
restart: always
volumes:
db_data:
使用 docker compose up -d 启动,docker compose down 停止。
实际应用场景
Docker 在 VPS 上适用于多种工作负载:
- Web 应用程序:几分钟内部署 Node.js、Python Flask、PHP Laravel
- 数据库:运行 MySQL、PostgreSQL、MongoDB,不影响宿主系统
- CI/CD:在容器中运行 GitLab Runner 或 Jenkins
- 反向代理:使用 Nginx 或 Traefik 在一台 VPS 上路由多个应用
- 游戏服务器:Minecraft、Valheim 服务器在独立容器中运行
- 监控:两条命令部署 Prometheus + Grafana 监控栈
VPS 上的 Docker 安全
Docker 增强了隔离性,但需要遵循以下安全最佳实践:
- 避免以 root 运行容器:使用
--user参数或在 Dockerfile 中定义非 root 用户 - 使用官方镜像:只从 Docker Hub 官方或经过验证的发布者拉取镜像
- 定期更新镜像:频繁运行
docker pull获取安全补丁 - 限制资源:使用
--memory和--cpus防止资源耗尽 - 防火墙注意事项:Docker 默认绕过 UFW,需谨慎配置规则
# 限制内存和 CPU
docker run -d --name my-app --memory="512m" --cpus="0.5" my-image
常见问题 (FAQ)
Docker 需要什么配置的 VPS?
基础 Docker 使用建议至少 1 GB 内存和 1 vCPU。同时运行多个容器时,推荐 2 GB 或以上内存。
Docker 和虚拟机有什么区别?
Docker 容器共享宿主机内核,比虚拟机轻量 10–20 倍。虚拟机需要运行完整的操作系统,资源消耗更大。
Docker Compose 和 Docker 有什么区别?
Docker Compose 通过 docker-compose.yml 文件同时管理多个容器,适合包含多个服务的应用,如 Web + 数据库 + 缓存。
如何在 Ubuntu 上安装 Docker?
运行:sudo apt update && sudo apt install -y docker.io && sudo systemctl enable --now docker,然后添加用户:sudo usermod -aG docker $USER。
Docker 镜像和容器有什么区别?
镜像是创建容器的蓝图,容器是从镜像运行的实例。一个镜像可以创建多个容器。
总结
在 Ubuntu VPS 上使用 Docker,开启了快速、灵活、易管理的应用部署新世界。只需简单的 apt install docker.io,几分钟内即可运行容器。
本指南涵盖:Docker 安装、基础命令、Docker Compose 多容器应用、实际应用场景和安全最佳实践。