VPS · 指南

如何在 Ubuntu 上安装 Docker

更新于 October 11, 2026 2 分钟阅读

本页内容
  1. 开始之前
  2. 第 1 步:删除冲突的软件包
  3. 第 2 步:添加 Docker 软件源
  4. 第 3 步:安装 Docker 和 Compose
  5. 第 4 步:权限与日志轮转
  6. 第一个 Compose 文件
  7. Docker 与 ufw:防火墙陷阱
  8. 在 HytHost VPS 上运行 Docker
  9. 常见问题

Docker 在容器中运行应用:每个容器都自带所需的一切,因此在你的笔记本和服务器上运行效果完全相同。网站、数据库、机器人和游戏服务器都可以用一条命令或一个 Compose 文件启动。

本指南从 Docker 官方软件源在 Ubuntu 24.04 或 22.04 上安装 Docker Engine 和 Docker Compose,然后介绍在真实服务器上真正重要的设置:权限、日志和防火墙。

开始之前

  • 受支持的 Ubuntu:Docker 支持 64 位的 Ubuntu 26.04、24.04 和 22.04 LTS。用 cat /etc/os-release 查看你的版本。
  • KVM 服务器,而不是容器:Docker 需要自己的内核功能。它可以在任何 KVM VPS 上运行,但在基于容器(OpenVZ 或 LXC)的套餐上往往无法运行。
  • root 或具有 sudo 权限的用户。下面的命令使用 sudo;如果你以 root 登录,可以省略它。

在服务器上请避免使用 Ubuntu 自带软件源中的 docker.io 软件包以及 Snap 版本:Docker 的软件源最先获得新版本,而且 Docker 官方文档使用的也是它。

Docker 需要真正的虚拟机:HytHost KVM VPS 套餐提供 Ubuntu 和完整 root 权限,每月 €2.92 起。

查看 VPS 套餐

第 1 步:删除冲突的软件包

如果你之前从其他来源安装过 Docker,请先删除这些软件包。在全新的服务器上,apt 只会提示这些软件包都未安装:

sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc docker-buildx podman-docker containerd runc | cut -f1)

此操作不会删除 /var/lib/docker/ 中的镜像和卷。

第 2 步:添加 Docker 软件源

以下命令来自 Docker 文档,会为你的 Ubuntu 版本添加 Docker 的签名密钥和 apt 软件源:

sudo apt update
sudo apt install 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 <<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

第 3 步:安装 Docker 和 Compose

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

这会安装 Docker Engine、命令行工具、Buildx 构建器和 Compose 插件。检查是否正常工作:

sudo docker run hello-world
docker compose version

第一条命令会下载一个很小的测试镜像并打印欢迎信息。在 Ubuntu 上,Docker 会在开机时自动启动,因此无需额外启用。

Compose 指的是 docker compose 命令,中间是空格。带连字符的旧版 docker-compose 是已停用的第一代版本;仍在使用它的教程,换用新命令同样可行。

第 4 步:权限与日志轮转

不用 sudo 运行 docker。将你的用户加入 docker 组,然后注销并重新登录:

sudo usermod -aG docker $USER

请注意,Docker 自己也警告该组会授予相当于 root 的权限:组内任何人都能控制整台服务器。只添加你愿意给予 root 权限的用户。

限制日志大小。默认情况下,容器日志会无限增长,可能占满磁盘。创建 /etc/docker/daemon.json:

{
  "log-driver": "json-file",
  "log-opts": { "max-size": "10m", "max-file": "3" }
}

然后运行 sudo systemctl restart docker。该限制只对更改后创建的容器生效,所以请重新创建现有容器。

第一个 Compose 文件

Compose 用一个文件描述你的容器。新建一个文件夹并在其中创建 compose.yaml:

services:
  web:
    image: nginx:stable
    ports:
      - "127.0.0.1:8080:80"
    restart: unless-stopped

用 docker compose up -d 启动,用 docker compose ps 查看状态,用 docker compose logs 查看日志。restart: unless-stopped 会在崩溃或重启后让容器自动恢复。端口特意绑定到 127.0.0.1,原因见下一节。

Docker 与 ufw:防火墙陷阱

几乎每个人都会踩到这个坑。当你发布一个端口,例如 -p 8080:80,Docker 会添加自己的防火墙规则,并且这些规则在 ufw 的规则之前生效。即使 ufw 显示端口已关闭,它实际上仍对互联网开放。

  • 将端口绑定到 localhost,适用于只有服务器本身需要访问的情况,例如数据库或反向代理后面的应用:127.0.0.1:8080:80。
  • 完全不要发布数据库端口;改为让容器通过 Docker 网络互相访问。
  • 如需按来源地址过滤,请在 iptables 的 DOCKER-USER 链中添加规则,Docker 会先检查该链,再检查自己的规则。

在 Docker 中运行的游戏服务器同样如此;请参阅如何为游戏服务器配置 VPS。

在 HytHost VPS 上运行 Docker

HytHost VPS 套餐基于 KVM,每台 VPS 都有自己的内核,Docker 可以不受限制地运行。下单时选择 Ubuntu 24.04 或 22.04,通过 SSH 连接,然后按照上面的步骤操作即可。你将获得完整的 root 权限、SSD 存储和 DDoS 防护,并且可以随着容器增多随时升级到更大的套餐。

常见问题

常见问题

Docker 支持 64 位的 Ubuntu 26.04、24.04 和 22.04 LTS。其他基于 Ubuntu 的系统(如 Linux Mint)不在官方支持范围内。

生产服务器上不建议。Docker 表示这个便捷脚本适用于开发环境,不推荐用于生产环境;它还可能直接升级到新的主版本。请改用软件源方式安装。

带连字符的 docker-compose 是已停用的旧版本。如今 Compose 是一个 Docker 插件,用法为 docker compose,通过 docker-compose-plugin 软件包安装。

Docker 发布的端口会绕过 ufw。如果端口只应在本地使用,请将其绑定到 127.0.0.1,或者在 DOCKER-USER 链中进行过滤。

KVM VPS 可以。基于容器的 VPS 套餐(如 OpenVZ)往往无法运行 Docker,或者需要服务商进行特殊设置。

在 VPS 上运行你的容器

HytHost KVM VPS 套餐可不受限制地运行 Docker,提供完整 root 权限和 Ubuntu 24.04,每月 €2.92 起。

Live chat 8 AM – 11 PM (Chișinău time) · tickets answered during business hours

这篇指南对你有帮助吗?