−25%

Windows 按年付费,截至 10 月 31 日。 查看套餐

EQVPS
开始使用

如何在 VPS 上安装 Docker

用正确的方式在 Ubuntu 上安装 Docker Engine 和 Compose 插件——从 Docker 官方仓库安装,而不是过时的发行版软件包——然后运行一个测试容器并设置为开机自启。几条命令就能得到一台可用的容器主机。

Docker 把一个应用和它需要的一切打包进一个容器,让它在任何地方都能以同样的方式运行——这是在 VPS 上自建服务最干净的方式。在 Ubuntu 和 Debian 上唯一要注意的是,发行版自带仓库中的版本往往比较旧,而且不带现代的 Compose 插件。请改用 Docker 官方仓库来安装。以下是完整流程。

1. 设置 Docker 官方仓库(Ubuntu)

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

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
  https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

2. 安装 Docker Engine 和 Compose

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

3. 确认它正在运行并已设置为开机自启

sudo systemctl enable --now docker
sudo docker run --rm hello-world

hello-world 容器会被下载下来,打印一条成功信息然后退出——这就证明了引擎工作正常。

4.(可选)在不使用 sudo 的情况下运行 Docker

sudo usermod -aG docker $USER
# log out and back in for the group to take effect

只对你信任的用户这样做——docker 组的访问权限在这台主机上实际上等同于 root。

一个真实的小容器

docker run -d --restart unless-stopped -p 8080:80 --name web nginx
# visit http://YOUR.SERVER.IP:8080

--restart unless-stopped 正是让容器在重启后自动恢复的关键。

诚实的提醒

  • 使用官方仓库以获得较新的版本; 发行版自带的 docker.io 软件包版本落后,也不带 Compose 插件。
  • 只开放你发布出去的端口。 容器的 -p 8080:80 会暴露 8080 端口——把 Docker 和 UFW 防火墙 搭配使用。
  • 根据容器来配置机器规格,而不是根据 Docker 本身——它很轻量。

下一步

装好 Docker 之后,你几乎可以自建任何服务。参见 在一个 IP 上自建多个服务,或者具体的 Docker 搭建案例,比如 RustDesk 远程桌面服务器 和 Uptime Kuma 监控。要在前面加上域名和 HTTPS,参见 如何配置 nginx 反向代理。

常见问题

我应该用 'apt install docker.io' 还是 Docker 官方仓库?

想要一个较新的版本,请用 Docker 官方仓库(见下方步骤)。发行版自带的 docker.io 软件包虽然方便,但版本往往落后,而现代的 'docker compose' 插件是随官方软件包一起提供的。如果你只需要一台临时用完即弃的机器,docker.io 也够用。

'docker compose' 和 'docker-compose' 有什么区别?

旧的 'docker-compose' 是一个独立的 Python 工具(带连字符)。现在用的是 'docker compose'(中间有空格)——一个随 Docker 一起打包的插件。请使用这个插件;独立工具已经是遗留方案。按下面的步骤安装 docker-compose-plugin 就能获得它。

如何在不每次输入 sudo 的情况下运行 Docker?

把你的用户加入 docker 组:'sudo usermod -aG docker $USER',然后重新登录一次。请注意,这实际上等于通过容器授予了 root 级别的访问权限,所以只对你信任、且是你自己机器上的用户这样做。

Docker 需要多少内存?

Docker 本身很轻量;真正吃资源的是你运行的容器。一两个小型应用在 1 GB 的机器上就能舒服运行,而更重的组合(数据库、多个服务)则需要更多余量。请根据工作负载来选配置,而不是根据 Docker 本身。

重启之后我的容器还会在吗?

只有你明确告诉它们要这样做才会。按照下面的步骤,Docker 的服务会被设置为开机自启,而以 '--restart unless-stopped'(或在 Compose 中配置同样的策略)启动的容器会自动恢复。如果没有设置重启策略,容器在重启后就会保持停止状态。

评论

暂无评论。来做第一个吧。

发表评论

评论在显示前会经过审核。