博客

教程、指南和产品动态。

开发者

什么是 Docker?如何在 VPS 上使用?

3 11月 2026 2 分钟阅读
分享此文章

Docker 是一种工具,它把应用连同所需的一切,放在一个称为容器的隔离包中运行。在 VPS 上使用 Docker,意味着您从现成的包启动应用,而不是在服务器上一件件安装。安装和移除只需几条命令,而且应用之间不会干扰彼此的设置。

与虚拟机不同,容器不自带操作系统。它共用服务器的内核,所以几秒钟就能启动,占用的内存也很少。代价是它的隔离性不如虚拟机强。

入门只需四个术语

术语含义
镜像(Image)应用现成的包。它从 Docker Hub 之类的镜像仓库下载。
容器(Container)从镜像启动的一个运行中的副本。
卷(Volume)持久存储,即使容器被删除,数据也会保留。
Compose一种工具,在一个 compose.yaml 文件中定义多个容器,并用一条命令管理它们。

删除容器会删除其中的文件。必须保留的内容(例如数据库)要挂载到卷或服务器的文件夹上。

如何在 Ubuntu 上安装 Docker?

首先通过 SSH 连接服务器。Ubuntu 软件源中的 docker.io 软件包可以使用,Seturack 预装 Docker 的服务器用的就是它。如果要最新版本,请使用 Docker 自己的 apt 软件源。根据 Docker 官方文档,Ubuntu 的 docker.io、docker-compose 等软件包与 Docker 自己的软件包冲突,所以如果已经安装,请先删除。

  1. 按照 Docker 的 Ubuntu 安装页面上“apt repository”一节添加软件源的签名密钥和源。请原样运行那里的命令,因为它们会随版本变化。
  2. 安装软件包:sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  3. 检查服务是否在运行:sudo systemctl status docker
  4. 运行测试容器:sudo docker run --rm hello-world

如果看到欢迎信息,说明 Docker 已就绪。在 Ubuntu 和 Debian 上,服务会在每次开机时自动启动。

您的第一个容器

用一条命令启动一个 Web 服务器:

docker run -d --name web --restart unless-stopped -p 80:80 nginx:1.30

-d 让容器在后台运行。--restart unless-stopped 会在服务器重启或容器崩溃时重新启动它。-p 80:80 把服务器的 80 端口连接到容器。nginx:1.30 是镜像名称和版本标签。这个标签只是示例,请到 Docker Hub 上的官方 Nginx 页面选择当前的稳定标签。在浏览器中打开服务器的 IP 地址,您会看到 Nginx 欢迎页面。要删除它,请运行 docker rm -f web。

为持久数据挂载一个卷,例如 -v sitedata:/usr/share/nginx/html。用 docker volume ls 列出卷。同一个 compose.yaml 文件中的服务可以通过服务名互相访问,例如您的应用以 db 的名字连接数据库。

有多个容器时,把它们都写进一个 compose.yaml 文件,并在该文件所在的文件夹中运行 docker compose up -d。文件中的 image、restart、ports 和 volumes 键与上面的参数相对应。用 docker compose ps 检查状态,用 docker compose logs -f 查看日志,用 docker compose down 关闭全部容器。

每天都会用到的命令

命令作用
docker ps列出运行中的容器。加上 -a 还能看到已停止的容器。
docker logs -f web实时跟踪 web 容器的日志。
docker exec -it web sh在容器内打开一个 shell。
docker stats显示容器的 CPU 和内存使用情况。
docker compose pull 和 docker compose up -d下载新镜像,并用新容器替换旧容器。卷中的数据会保留。

更新之前,请阅读应用的发行说明,并自己在 compose 文件中提高版本标签。固定标签的意义在于,让更新成为一个决定,而不是一次意外。

需要留意的四件事

  • Docker 会绕过 ufw 规则。根据官方文档,Docker 发布的端口会在 ufw 规则生效之前就被开放。一条拒绝该端口的 ufw 规则不会起作用。对于不能从外部访问的服务,请只绑定到本地地址,例如 -p 127.0.0.1:5432:5432。同一个 Docker 网络中的容器本来就可以互相访问,所以不需要发布数据库。
  • latest 标签。如果不指定标签,会拉取 latest。下次拉取时,您的应用可能跳到一个您没想到的版本。请写明具体的标签,并自己安排更新。
  • docker 组就等于 root。把用户加入 docker 组,就赋予该用户 root 级别的权限(官方文档)。只添加您信任的账户。
  • 日志和镜像会占满磁盘。Docker 默认的日志设置没有大小限制。请在容器上设置:--log-opt max-size=10m --log-opt max-file=3。docker system df 显示磁盘使用情况,docker image prune 会删除没有标签的镜像。

用 Docker 还是直接安装?

如果您在一台服务器上运行多个需要不同版本的应用,想试用某个应用并干净地删除,或者开发者发布了官方镜像,Docker 会有帮助。对于单个 WordPress 网站这样的简单情形,直接安装也完全可以。Docker 是额外的一层:更新它、监控它、备份卷,都是您的工作。如果拿不准,就从一个小应用开始,不必一次把所有东西都搬到 Docker 上。

Seturack 上的 Docker 开箱即用

如果不想自己安装 Docker,可以下单选择带 Docker 应用的服务器。Docker 和 Compose 已安装好,安装约需 2.5 分钟。防火墙(ufw)已开启,对外只开放 SSH 端口,fail2ban 保护 SSH,每个容器的日志限制为 3 个文件,每个 10 MB。这个应用没有网页界面,所以面板中不显示网站地址。上面提到的端口陷阱在这里同样适用。想从现成的服务器开始,请看 Docker VPS 页面。

Seturack 上的现成方案: Portainer, Coolify, Dokploy.

评论0

暂无评论

成为第一个分享想法的人。

参与讨论

请登录或注册后发表评论。

不错过任何文章

通过电子邮件接收我们最新的教程、指南和产品资讯。

您已订阅我们的电子通讯。