大家好。我叫 Lee,从 2013 年开始就断断续续地自行托管 Discourse。我记得刚开始时不得不折腾 rbenv。我记得不得不编译 nginx 和 Phusion Passenger 来运行东西。我记得大约十年前和 @sam 争论过,认为转向 Docker 是屈服于“在我家目录和我的点文件噩梦中就能运行”的开发者弱点(我当时大错特错!)。我记得第一次听到“自行车棚”这个说法。引用他的话,我记得一切。
在离开几年后,我又有机会重新开始自行托管 Discourse,以取代休斯顿地区天气网站上的原生 WordPress 评论。该网站通常每天有约 10,000 次页面浏览量,但在飓风期间,可能会达到约 200 万次页面浏览量,约有 100 万独立访客。多年来,我们一直在努力解决 WordPress 的原生评论问题,但从上周三开始,我们已成功上线自行托管的 Discourse。(而且还是在 Graviton3 上!说真的,它就是能用,而且很棒。)
我要说的是重点:现在是 2025 年,作为一名自行托管者,我仍然需要手动管理我的 Docker 镜像空间。在生产环境运行不到一周后,我将通过代码片段讲述一个关于 /dev/root 的故事:
[11:49:56] 0 ✓ (1.8ms)
root@discourse:/var/discourse # df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 30G 21G 9.6G 69% /
tmpfs 7.7G 0 7.7G 0% /dev/shm
tmpfs 3.1G 1.1M 3.1G 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
efivarfs 128K 3.6K 125K 3% /sys/firmware/efi/efivars
/dev/nvme1n1p16 891M 109M 720M 14% /boot
/dev/nvme1n1p15 98M 6.4M 92M 7% /boot/efi
/dev/nvme0n1 32G 346M 30G 2% /var/discourse
tmpfs 1.6G 12K 1.6G 1% /run/user/1001
overlay 30G 21G 9.6G 69% /var/lib/docker/overlay2/5a649418bbfc064f488e895572eec1ace487a3eaa324fe1d8e3b395e6c5e3645/merged
[11:49:59] 0 ✓ (4.8ms)
root@discourse:/var/discourse # ./launcher cleanup
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B
WARNING! This will remove all images without at least one container associated to them.
Are you sure you want to continue? [y/N] y
Deleted Images:
untagged: discourse/base@sha256:3696bdf18652b5455bd33795ec3b8e0f201c17a04f0e0126fc0317ed821373cd
....
[a whoooooooooooooooole lot of lines redacted]
....
Total reclaimed space: 12.43GB
[11:50:34] 0 ✓ (27.8s)
root@discourse:/var/discourse # df -h
Filesystem Size Used Avail Use% Mounted on
/dev/root 30G 6.9G 24G 23% /
tmpfs 7.7G 0 7.7G 0% /dev/shm
tmpfs 3.1G 1.1M 3.1G 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
efivarfs 128K 3.6K 125K 3% /sys/firmware/efi/efivars
/dev/nvme1n1p16 891M 109M 720M 14% /boot
/dev/nvme1n1p15 98M 6.4M 92M 7% /boot/efi
/dev/nvme0n1 32G 346M 30G 2% /var/discourse
tmpfs 1.6G 12K 1.6G 1% /run/user/1001
overlay 30G 6.9G 24G 23% /var/lib/docker/overlay2/5a649418bbfc064f488e895572eec1ace487a3eaa324fe1d8e3b395e6c5e3645/merged
[11:55:28] 0 ✓ (3.3ms)
root@discourse:/var/discourse #
我爱你们。我爱 Discourse。我与这个产品紧密相连,并打算在可预见的未来一直使用它。
但是,呃……为什么。为什么现在是 2025 年,我还在自己动手管理 launcher cleanup?为什么镜像管理不是 launcher 的固有功能?
再说一遍,我爱你们。我选择 Discourse 作为 SCW 的评论系统,是因为我信任你们构建的东西,并且我喜欢使用它。但是,呃……我 AMI 的启动卷有一半被无用的垃圾占用了,这些垃圾本可以——至少如果我理解技术方面的话——被自动管理。
我不是在抱怨——只是在离开管理员职位几年后再次回来检查。我喜欢 AI 垃圾邮件检测和 AI 审核,尤其是在一个天气论坛上,关于气候变化的政治敏感帖子(无论是支持还是反对)是常有的事。感谢你们所做的一切 <3