我在服务器上跑了三十年前的《仙剑奇侠传》,顺便把整个DOS时代打包进了Docker
1995年,一个平常的下午。你坐在电脑前,显示器还是那种厚重的CRT,打开C:>,输入GAME\START.EXE,屏幕闪了一下,《仙剑奇侠传》的标题画面出现了。声卡还没配好,只有主板蜂鸣器在响,但那种等待载入的期待感,后来再也没有过。那时候没有图形安装界面,没有steam,没有一键下载。游戏要先塞进软盘,配置声卡要查 IRQ 和 DMA,用笔在纸上记下来,一行一行改config.sys。然后你长
前言
1995年,一个平常的下午。
你坐在电脑前,显示器还是那种厚重的CRT,打开C:>,输入GAME\START.EXE,屏幕闪了一下,《仙剑奇侠传》的标题画面出现了。声卡还没配好,只有主板蜂鸣器在响,但那种等待载入的期待感,后来再也没有过。
那时候没有图形安装界面,没有steam,没有一键下载。游戏要先塞进软盘,配置声卡要查 IRQ 和 DMA,用笔在纸上记下来,一行一行改config.sys。
然后你长大了,那些游戏存在了硬盘的某个角落里,再也打不开了。
现在不一样了。一台装了Docker的Linux,35年前的《仙剑》、1993年的《大富翁》、那些在286机器上运行过的迷宫游戏,全部可以跑在一个浏览器窗口里。不用装任何模拟器,不需要自己配置任何东西,docker-compose up,三十年前的数字记忆就醒了。
这件事有意思的地方不只是"能玩"——而是现代的容器技术和三十年前的单机游戏,它们之间其实没有隔阂。

1.Docker部署DOS
我本地是在linux上部署,大家不管什么系统只要有docker步骤都大同小异。
首先切换到root用户,然后输入以下命令创建安装目录:
sudo -i
mkdir -p /root/data/docker_data/games
cd /root/data/docker_data/games

创建部署脚本:
vim docker-compose.yml
这边有两种搭建方式,因为36G的游戏做成docker的镜像太大了,所以我只是将40多个经典的DOS游戏封装到了docker的镜像里面,所以你的服务器如果硬盘不够大,可以直接用默认的方式安装。
安装40多个经典游戏:
version: '3.3'
services:
dosgame-web-docker:
container_name: dosgame
ports:
- '8090:262' #8090可以改成其他服务器没被占用的端口
# volumes:
# - '/root/data/docker_data/games/chinese-dos-games:/app/static/games'
image: 'oldiy/dosgame-web-docker:latest'
安装1989款游戏:
version: '3.3'
services:
dosgame-web-docker:
container_name: dosgame
ports:
- '8090:262' #8090可以改成其他服务器没被占用的端口
volumes:
- '/root/data/docker_data/games/chinese-dos-games:/app/static/games'
image: 'oldiy/dosgame-web-docker:latest'

在games目录下部署chinese-dos-games:
cd /root/data/docker_data/games/
git clone https://github.com/rwv/chinese-dos-games.git
若显示如下错误,证明还没有安装git,安装即可:

yum update -y

yum install -y git

继续部署:

部署完成后,继续下面操作:
python3 download_data.py

若没有Python可以执行:
yum update -y
yum install -y python3
安装完以后统计bin目录中“普通文件”的数量,正常是1898(安装40多款经典游戏的):
ls -l /root/data/docker_data/games/chinese-dos-games/bin | grep "^-" | wc -l

继续切换到这个目录,启动并运行一个由 docker-compose.yml 定义的多容器应用:
cd /root/data/docker_data/games
docker-compose up -d

若是没有docker-compose,可以用下列命令安装:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.7/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose --version
接下来使用linux的ip+8090端口就可以在Windows浏览器打开啦!

然后就可以玩专属于我们的青春回忆啦!

在复古计算环境中,DOS 系统虽已远离主流,但通过 DOSBox 等模拟器仍可运行经典游戏或程序。结合 cpolar 这类内网穿透工具,可以将本地运行的 DOS 应用暴露到公网,实现远程访问。例如,在本地启动一个 DOS 游戏网页界面后,可生成一个公网 URL,让他人通过浏览器实时体验“仙剑奇侠传”等怀旧游戏,无需复杂配置,实现“复古+互联”的趣味结合。
接下来跟我一起部署cpolar让你的朋友们也玩起来吧!
2.安装cpolar实现随时随地开发
cpolar 可以将你本地电脑中的服务(如 SSH、Web、数据库)映射到公网。即使你在家里或外出时,也可以通过公网地址连接回本地运行的开发环境。
❤️以下是安装cpolar步骤:
使用一键脚本安装命令:
sudo curl https://get.cpolar.sh | sh

安装完成后,执行下方命令查看cpolar服务状态:(如图所示即为正常启动)
sudo systemctl status cpolar

Cpolar安装和成功启动服务后,在浏览器上输入虚拟机主机IP加9200端口即:【http://192.168.42.100:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可:
打开浏览器访问本地9200端口,使用cpolar账户密码登录即可,登录后即可对隧道进行管理。

4.配置公网地址
登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:
-
隧道名称:可自定义,本例使用了:dos,注意不要与已有的隧道名称重复
-
协议:http
-
本地地址:8090
-
域名类型:随机域名
-
地区:选择China Top

创建成功后,打开左侧在线隧道列表,可以看到刚刚通过创建隧道生成了公网地址,接下来就可以在其他电脑或者移动端设备(异地)上,使用地址访问。

访问成功。

4.保留固定公网地址
使用cpolar为其配置二级子域名,该地址为固定地址,不会随机变化。

点击左侧的预留,选择保留二级子域名,地区选择china Top,然后设置一个二级子域名名称,我这里演示使用的是doss,大家可以自定义。填写备注信息,点击保留。

登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道plex,点击右侧的编辑。

修改隧道信息,将保留成功的二级子域名配置到隧道中
- 域名类型:选择二级子域名
- Sub Domain:填写保留成功的二级子域名
- 地区: China Top
点击更新

更新完成后,打开在线隧道列表,此时可以看到随机的公网地址已经发生变化,地址名称也变成了保留和固定的二级子域名名称。

最后,我们使用固定的公网地址在任意设备的浏览器中访问,可以看到成功访问本地部署的DOS页面,这样一个永久不会变化的二级子域名公网网址即设置好了。

这样,朋友也可以通过我们的链接来访问啦,是不是很方便呢~
总结
《仙剑奇侠传》发行那年,能流畅运行它的机器大概长这样:486 CPU、8MB内存、200MB硬盘。那是一台机器全部的算力。
现在你的NAS可能用着一颗ARM芯片、4GB内存、几个TB的存储。算力是那台486的上万倍。然后你用Docker,把一个1995年的游戏拉起来,放在那台NAS上跑。
这不是炫技。这件事的浪漫之处在于:过去没有被遗弃,它只是被换了一个容器继续运行。下次你想重温一下那个下午的感觉,只需要打开浏览器输入地址就行。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)