在VPS上开始使用Docker
由ApexVPS团队撰写 • 最后更新:2026年7月 • 8分钟阅读
在VPS上运行Docker是几分钟内从空白的Ubuntu服务器到运行中的Web应用、数据库或自托管服务的最快方式。无需与系统包和冲突的依赖项斗争,只需拉取预构建的镜像并启动容器。本初级指南将引导您在Ubuntu或Debian上安装Docker和Docker Compose,介绍您需要的核心概念,启动您的第一个容器,使用卷持久化数据,以及一些安全基础知识,以避免踩坑。
为什么在VPS上运行Docker?
虚拟专用服务器为您提供完全的 root 权限和专用资源,这正是容器所需要的。安装 Docker 后,您可以在不互相干扰的情况下并行运行多个隔离服务。每个容器自带其库,因此 Node 应用、Postgres 数据库和反向代理可以干净地共存于一台机器上。如果您的目标是在 VPS 上自行托管应用——比如个人云、Wiki 或媒体服务器——Docker 能让每个服务整洁且可复现。
容器也是可移植的。与笔记本电脑上运行的相同 Compose 文件可以同样在服务器上运行,从而消除了经典的"在我机器上能跑"的问题。犯错后重建服务只需几秒钟,而不是花费整个下午重新安装软件包。
通俗易懂的核心概念
在接触命令行之前,了解四个基本构件会有所帮助:
- 镜像 — 一个只读模板,包含应用程序及其运行所需的一切。您可以从 Docker Hub 等注册表下载镜像。可以将其视为快照或类。
- 容器 — 镜像的运行实例。您可以自由启动、停止和删除容器。多个容器可以从同一镜像运行,就像从类创建的对象一样。
- 卷 — 位于容器可写层之外的持久存储。当容器被替换时,卷用于保持数据库和上传文件的安全。
- 网络 — 一种虚拟网络,允许容器按名称相互通信。Docker 会为每个 Compose 项目自动创建一个网络,使您的应用可以通过友好的主机名访问其数据库。
第 1 步:在 Ubuntu 或 Debian 上安装 Docker
安装 Docker Engine 最简单且官方支持的方式是使用便捷脚本。通过 SSH 连接到服务器并运行:
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
这将安装 Docker Engine 以及 Compose 插件。完成后,确认版本:
docker --version
docker compose version
默认情况下,Docker 需要sudo。要以您的普通用户身份运行,请将您自己添加到docker组中,然后注销并重新登录,以使更改生效:
sudo usermod -aG docker $USER
Docker 在大多数系统上也默认随开机启动。如果您需要手动启用:
sudo systemctl enable --now docker
偏好软件包仓库方法,或想了解与您的具体发行版相关的详细信息?官方Docker 安装文档涵盖了所有选项。上述便捷脚本非常适合全新的 VPS。
第 2 步:运行您的第一个容器
使用经典的 hello-world 镜像测试安装:
docker run hello-world
Docker 拉取镜像,运行一次,并打印确认消息。现在让我们运行一些切实可见的内容。此命令在后台启动一个 Nginx Web 服务器,并将主机的端口 8080 映射到容器的端口 80:
docker run -d -p 8080:80 --name web nginx
在浏览器中打开http://your-server-ip:8080,您应该看到 Nginx 欢迎页面。几个值得了解的标志:
-d以分离模式在后台运行容器。-p 8080:80将端口发布为host:container。--name web为容器提供一个易于记忆的名称。
检查正在运行的内容,然后在完成后停止并移除容器:
docker ps
docker stop web
docker rm web
少量命令即可覆盖大多数日常工作。docker images列出已拉取的镜像,docker logs web显示容器的输出以进行故障排除,docker exec -it web bash在运行中的容器内打开 shell,以便您进行探索。学习这五六个命令足矣自信地管理小型服务器,其他命令可在需要时查阅。
第 3 步:使用 Docker Compose 部署多容器应用
长时间输入冗长的 docker run 命令会很烦人。Docker Compose 让你能在单个文件中描述整个技术栈,并通过一条命令启动它。创建一个名为 compose.yaml 的文件:
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- web-data:/usr/share/nginx/html
restart: unless-stopped
volumes:
web-data:
在同一个目录下,在后台启动所有服务:
docker compose up -d
Compose 会为你自动创建网络、命名卷和容器。有用的配套命令:
docker compose ps
docker compose logs -f
docker compose down
restart: unless-stopped 策略意味着服务在重启或崩溃后会自动恢复——这对于你无法全天候盯着的服务器来说非常方便。
第 4 步:使用数据卷持久化数据
这是初学者最容易出错的部分。容器自身文件系统内写入的任何内容,在容器被删除或重新创建时都会消失。要保留数据,需将其放入卷中。常见有两种方式:
- 命名卷——由 Docker 管理,非常适合数据库。上面的 Compose 示例使用了一个名为
web-data的卷。 - 绑定挂载——将宿主机上的文件夹直接映射到容器内,例如
./config:/etc/app。非常适合需要手动编辑的配置文件。
通过命令行检查和管理的卷:
docker volume ls
docker volume inspect web-data
只要你的重要路径指向卷,就可以整天删除和重建容器而不丢失一个字节。将卷目录作为服务器备份的一部分进行备份。
第 5 步:更新镜像和容器
容器镜像和任何软件一样会收到安全及功能更新。更新 Compose 技术栈是一个两步例行操作:拉取更新的镜像,然后重新创建容器。
docker compose pull
docker compose up -d
因为你的数据存放在卷中,所以重新创建容器是安全的。随着时间的推移,未使用的镜像会堆积起来并占用磁盘空间。请定期清理它们:
docker image prune
当你想要可预测、可重复的更新而不是意外时,请固定到特定的版本标签(例如使用 postgres:16 而不是 latest)。
面向初学者的基础 Docker 安全
容器很便捷,但它们并不是神奇的安全边界。养成几个好习惯可以让你避免麻烦:
- 只运行你信任的镜像。 优先选择官方镜像或知名发布者。不要仅仅因为教程让你以 root 身份运行随机镜像——不可信的镜像会在你的服务器上运行代码。
- 在容器内降级 root 权限。 许多官方镜像支持非 root 用户,或者你可以在 Dockerfile 中使用
USER指令来设置。以受限用户身份运行可以降低应用被入侵时的爆破半径。 - 只暴露你需要的端口。 每个
-p标志都为互联网打开一扇门。将数据库保留在内部 Docker 网络上,只暴露 Web 前端。 - 保持宿主机打补丁。 Docker 安全始于一个安全的服务器。定期运行
sudo apt update && sudo apt upgrade并加固 SSH。
在向公众暴露任何内容之前,请阅读我们的配套检查清单,了解如何在购买 VPS 后的前 10 分钟内保护你的 VPS——其中涵盖了 SSH 密钥、防火墙和自动更新,这些与 Docker 主机完美配合。
选择一款适合 Docker 的 VPS
Docker 在普通硬件上也能运行,但一旦堆叠多个容器,专用资源就会带来真正的不同。共享、超卖的托管意味着吵闹的邻居可能在最糟糕的时刻拖慢你的数据库。ApexVPS 为你提供真正专用的 vCPU、NVMe SSD 存储和完整 root 权限,因此你的容器能获得你所支付的性能。每个套餐都支持 Ubuntu、Debian 和其他流行的发行版,并且你可以在注册时添加 SSH 密钥。
结账仅支持通过 OxaPay 使用加密货币支付,接受 Bitcoin、Ethereum、USDT 以及 30 多种加密货币——无需信用卡、无需银行账户、无需 KYC。您只需提供一个邮箱即可接收访问详情,就这么简单。请访问 ApexVPS 定价页面 对比配置和区域,找到适合您容器工作负载的方案。
常见问题
在 VPS 上运行 Docker 需要大量 RAM 吗?
不需要。Docker 本身很轻量,额外开销很小。1 到 2 个容器在 2 GB RAM 下即可流畅运行,而 4 GB 或以上则能为数据库和多个服务提供充足余量。
是 docker-compose 还是 docker compose?
在现代安装中,Compose 作为插件提供,因此命令是 docker compose(带空格)。旧的独立 docker-compose 二进制文件仍然可用,但正逐渐被淘汰——建议在新环境中使用插件版本。
容器被删除时,我的数据存储在哪里?
容器内写入的任何内容都会在删除时丢失。请将重要数据存储在命名卷或绑定挂载中,以便在容器重建后保留。这才是数据库和上传文件安全持久化的方式。
我可以用加密货币支付 Docker 就绪的 VPS 吗?
可以。ApexVPS 结账仅支持通过 OxaPay 使用加密货币,接受 Bitcoin、Ethereum、USDT 及 30 多种币种。注册仅需邮箱,无需信用卡和身份验证。