使用你的容器
别人在他自己的机器上给了你一个容器。它用起来像一台小虚拟机:你以 root 身份 SSH 进去,装包,跑服务,top 显示的是你自己的进程。
这一页是张地图。 你想干的事几乎都在别的页里写清楚了,这里只告诉你在哪一页。 留在这一页的,是那几件关于容器本身、而不是关于里面那个系统的事: 重装会做什么、限额撞上去是什么感觉、出问题先看哪里。
如果你是跑机器的那一边,而不是拿着容器的那一边,你要看的是 operating the panel(英文)。
你想要哪个系统
| 你想要的 | 选哪个 |
|---|---|
| 想把一台小盒子榨干 | Alpine —— 文件系统 36 MB,空转时占 15 MB 内存;Debian 是 164 MB 和 105 MB。没有 systemd,没有 apt,没有 glibc,所以为别的系统写的教程都要翻译一遍。那一页就是那份翻译,而且老实交代了代价。 |
| 想要一个普通的、不用学的 Linux | Debian —— 大一些,换来 apt、systemctl、journalctl。你搜到的每一篇博客都能照抄。拿不准就选这个。 |
Ubuntu 和 Debian 那一页完全一样。AlmaLinux、Rocky、CentOS、Fedora 也一样, 把 apt 换成 dnf 就是。能装的系统的完整清单在第 2 节;Alpine 第 1 节把两边的占用逐行拆开了 —— 内存花在哪、硬盘花在哪、以及多大的容器该选哪个。
你也不是只能用别人给你的那个:重装成另一个系统只要一分钟,/data 会保留。
什么在哪一页
| 我想 | 在这里 |
|---|---|
| 第一次登录、设密码 | Alpine 第 2 节 · Debian 第 1 节 |
| 加 SSH 公钥 | 同上两节。公钥加在面板的 账号 → SSH 公钥 里,不是加进容器 |
| 装软件 | Alpine 第 3–4 节 · Debian 第 2 节 |
| 让程序开机自启,或者自己写一个服务 | Alpine 第 3、6 节 · Debian 第 2、4 节 |
装编辑器、git、htop、网络工具 | Alpine 第 5 节 · Debian 第 3 节 |
| 看日志、看进程、看内存和硬盘 | Alpine 第 7–8 节 · Debian 第 5–6 节 |
| 用自己的域名建站,带 HTTPS | 快速上手 —— 从加域名到小锁,四步 |
| 开一个裸端口 —— 游戏服、数据库、VPN | 公网端口 |
| 备份和恢复数据库 | 备份 PostgreSQL |
| 备份文件和目录 | 备份文件 |
| 自己做一个镜像并装上 | 自己做镜像 |
把我自己的软件加进 app-setup 菜单 | 添加你自己的软件 |
| 用脚本或监控读我这个容器的各项数字 | 面板 REST API |
第一天值得敲的三个词,都在容器里:
app-setup # 从菜单装软件:LNMP、WordPress、数据库、开发环境
dashboard # 这台盒子是什么、被允许用多少、正在用多少
helppage # 这份说明,在容器里,不用开浏览器1. 容器怎么来的
一个容器变成你的,有两条路,最后都落到同一个地方 —— 它出现在面板的 我的容器 里。
| 怎么给的 | 你要做什么 |
|---|---|
| 房东把它绑到你的用户名上 | 什么都不用做。登录就在那儿。 |
| 房东给你一个分享码 | 在 容器 → 兑换分享码 里兑换。兑换的时候顺便选 shell 登录名。 |
两条路都一样:它在到你手上之前就已经建好、并且已经在跑了 —— 机器、限额、到期日是房东定的,镜像是从第 2 节那张表里挑的。
如果账号是别人替你开的,你有用户名但还没有密码。 用房东留的那个邮箱走 忘记密码。用户名永远不变 —— 它是你在面板存储里的目录名 —— 但邮箱和密码你可以在 账号 里自己改。
一个账号可以同时拿着来自很多个房东的容器,不需要每台机器一个登录。
shell 的密码和你的面板密码是两回事,而且只显示一次 —— 容器建好那次,以及之后你每次重设的那一次。面板只留哈希。 丢了?在容器页面上、或者在容器里敲 passwd 重设一个,没有能找回来的东西。
2. 重启和重装
容器页面上的两个按钮,分量完全不一样。
重启是安全的。它把容器停掉再起来。文件系统、你装的包、你配的服务, 都不动。
重装把 / 抹掉,用一个镜像重建,/data 保留。 你装的每一个包、配的每一个服务、/data 以外的每一个文件:没了。 这件事不能撤销,所以对话框会让你把容器的名字打一遍。 你的 shell 登录名、密码、SSH 的地址都活得下来,域名和限额也一样。
这也正是 /data 值得用起来的原因。数据库、上传的文件、 任何丢了你会难受的东西:放到 /data 下面,然后让服务指过去。
已经在 shell 里的话,同一件事这样做:
reinstall 这个容器能用什么重建
reinstall debian-13 其中一个 —— 名字的一部分就够了
reinstall ref ghcr.io/you/thing:tag
reinstall archive box.tar光敲 reinstall 只会打印清单。确认之后,你的 SSH 会话会断 —— 容器在重建到一半时被停掉了。这是应该发生的事;一分钟后再登回来就行。
新镜像从哪来
从这台机器是房东在那台机器上缓存好的清单。这些镜像已经在那儿解开了, 所有用它建的容器共用一份,所以装一个不下载任何东西,几秒就好, 也不花你的流量。这是常见情况。
我自己的镜像是一个完整的仓库地址 —— ghcr.io/you/thing:tag —— 由宿主机去下载。它放在你自己容器的磁盘里,别人看不到, 这意味着每一次重装都要重新下载一遍,而且每一次下载都算你的流量。 房东可能根本没开这个选项,而没有独立磁盘的容器也没地方放这种只有它能看见的 镜像;对话框会告诉你是哪一种。见自己做镜像。
有的房东还会提供机器上的一个归档文件, 这是网络扛不住一次 200 MB 拉取的房东把镜像交给你的办法。
能装的系统
房东缓存了什么,你就能挑什么;下面这张表是 hqnode 发布出来给他们缓存的全部。 每一个都会启动一个 init,所以每一个都有服务、cron、包管理器, 和一个能用的 top。
| 版本 | 包管理器 | init | |
|---|---|---|---|
| Alpine | 3.24、3.23 | apk | OpenRC |
| Debian | 13、12、11 | apt | systemd |
| Ubuntu | 26.04、24.04、22.04、20.04、18.04*、16.04* | apt | systemd |
| AlmaLinux | 10、9、8 | dnf | systemd |
| Rocky | 9、8 | dnf | systemd |
| CentOS | Stream 10、Stream 9、7* | dnf,7 上是 yum | systemd |
| Fedora | 43 | dnf | systemd |
* 已经过了生命周期。它们还在这儿是因为总有人要,而且它们还能启动 —— 但里面的东西再也不会有安全更新了。不要用它们对外提供任何服务。
AlmaLinux 10 和 CentOS Stream 10 要求宿主机的 CPU 大致是 2015 年以后的 (x86-64-v3)。更老的机器上,它们会在第一条命令就挂掉, 报一个 glibc 关于 CPU 的错;这是发行版自己的要求,房东知道自己的硬件够不够。
3. 你的限额
房东设五个数字。容器页面把每一个和你正在用的量并排显示, 每次 SSH 登录也会打一遍:
System Debian GNU/Linux 13 (trixie)
Uptime 6d 4h
CPU 4% of 2 cores
Memory 734.0M of 2.0G (36%)
Disk 11.0G of 40.0G (28%)
Traffic 318.0G of 1.0T (29%) · 706.0G left
Expires 2026-09-30 (in 41 days)dashboard 会把剩下的也打出来 —— 公网端口、域名、怎么再登进来; dashboard net 或 dashboard cpu mem 只打其中一部分。
| 限额 | 撞上去是什么感觉 |
|---|---|
| vCPU | 你会被限速,但不会被杀。一切只是变慢。 |
| 内存 | 内核先挤压你,然后把最大的那个进程 OOM 掉。一个服务反复挂掉、日志里却什么都没有,一般就是这个。 |
| Swap | 没被碰过的内存页被挪出去,而不是算在内存里。它买的是空间,不是速度。为 0 就表示你只有内存。 |
| 硬盘 | 写入失败,报 "no space left on device"。/ 和 /data 算在一起。 |
| 流量 | 到 80% 面板记一条警告;到 100% 容器被暂停 —— 是停掉,不是删掉。 |
其中三个值得多说一句:
你的 vCPU 数字是下限,不是上限。 没人要的核就是你的, 所以一个只卖了半核的容器,在邻居都闲着的时候能跑到两核, 邻居醒了再掉回半核。同一个跑分跑两次会给你两个结果; 诚实的那个是机器忙的时候跑出来的。如果房东卖给你的是批处理容器, 规则更简单:你拿别人剩下的,而且你跑什么都不会拖慢别人 —— 编译和过夜任务很合适,有人在等着的东西不合适。
Swap 不是额外的内存。 宿主机一般把它压缩着放在 RAM 里, 所以冷页的实际代价只有它标称的一小部分。小容器上有一点是健康的; 如果又多又慢,说明工作集根本放不下,加再多 swap 也没用。
流量按月计,窗口从房东挑的某一天开始 —— 常常是 1 号,但不一定; 容器页面上写着当前这个窗口是哪天开的。进出都算。 被暂停的容器会在窗口翻篇时回来,房东提高额度的话可以更早。
4. 到期
每个容器都有一个到期日,最后一周面板会在页面上提醒你。
日子过了,容器会被停掉,SSH 登录被禁用。什么都不会被删。 到期是一个开关,不是一把扫帚:硬盘还是你离开时的样子。 去找房东续期,日期往后一挪它就直接回来 —— 数据一样,登录一样。
5. 出问题的时候
| 你看到的 | 通常是什么 |
|---|---|
| SSH 被拒绝 | 容器到期了,或者因为流量超额被暂停了。面板上写着是哪一个。 |
| SSH 一直反复问密码 | 密码不对。在容器页面上重设一个 —— 面板没法把旧的显示给你。 |
| 页面上说机器离线 | 房东的机器没在和面板说话。你的容器可能还跑得好好的;但在它回来之前,页面上什么都改不了。找房东。 |
| 重启或重装失败 | 同上:面板够不着那台机器。 |
| 服务莫名其妙死掉,什么错都没有 | 一般是内存。跑的时候盯着内存那一行看。 |
| "No space left on device" | 硬盘。/ 和 /data 共用一个额度。 |
| 域名或公网端口连得上,但什么都不返回 | 服务绑在了 127.0.0.1。必须绑 0.0.0.0 —— Alpine 第 9 节 · Debian 第 7 节。 |
| 什么都很慢 | CPU 被限速了,或者宿主机自己在忙。你页面上那张图覆盖最近七天。 |
面板不在你跑的任何东西的路径上。它挂了,你的容器照样跑,SSH 照样能登 —— 只是在它回来之前你没法重启和重装。