用Docker在Linux服务器上5分钟搭建一个网页版超级马里奥(附镜像加速技巧)
2026/6/3 6:33:12 网站建设 项目流程

5分钟用Docker在Linux服务器部署网页版超级马里奥:从零搭建到公网访问全指南

周末想找点乐子?不如用闲置的云服务器搭建一个能随时打开的网页版超级马里奥!这个经典游戏不仅能让技术宅重温童年回忆,还能成为办公室的"团建神器"。本文将手把手教你如何用Docker快速部署,并解决国内镜像拉取慢、公网访问等实际问题,最后还会教你如何用Nginx反代和域名绑定,打造专属的怀旧游戏站。

1. 环境准备与Docker安装

在开始之前,确保你有一台运行Linux的服务器(云服务器或本地虚拟机均可)。推荐使用Ubuntu 20.04/22.04或CentOS 7/8系统,这些系统对Docker的支持最为完善。

1.1 安装Docker引擎

对于Ubuntu/Debian系统,执行以下命令:

# 卸载旧版本(如有) sudo apt-get remove docker docker-engine docker.io containerd runc # 安装依赖工具 sudo apt-get update sudo apt-get install ca-certificates curl gnupg lsb-release # 添加Docker官方GPG密钥 sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # 设置稳定版仓库 echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 安装Docker引擎 sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

对于CentOS/RHEL系统,使用以下命令:

# 卸载旧版本 sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine # 安装必要工具 sudo yum install -y yum-utils # 设置稳定版仓库 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 安装Docker引擎 sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

1.2 启动Docker服务并设置开机自启

sudo systemctl enable --now docker

验证安装是否成功:

sudo docker run hello-world

如果看到"Hello from Docker!"的欢迎信息,说明安装成功。

注意:如果服务器在中国大陆地区,建议立即配置镜像加速器,否则后续拉取镜像可能非常缓慢。

2. 配置国内镜像加速器

由于Docker Hub在国内访问速度较慢,我们需要配置镜像加速器。以下是国内主流云服务商提供的加速地址:

服务商加速器地址
阿里云https://<你的ID>.mirror.aliyuncs.com
腾讯云https://mirror.ccs.tencentyun.com
华为云https://<你的ID>.swr.myhuaweicloud.com
网易云https://hub-mirror.c.163.com

以阿里云为例,配置方法如下:

  1. 登录阿里云容器镜像服务控制台
  2. 左侧菜单选择"镜像工具"→"镜像加速器"
  3. 复制专属加速器地址

然后在服务器上创建或修改/etc/docker/daemon.json文件:

sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://你的ID.mirror.aliyuncs.com"] } EOF

重启Docker服务使配置生效:

sudo systemctl daemon-reload sudo systemctl restart docker

验证配置是否生效:

docker info | grep Mirrors -A 1

如果看到你配置的镜像地址,说明加速器已正常工作。

3. 部署网页版超级马里奥

现在我们可以开始部署游戏了。这里使用一个开源的网页版超级马里奥Docker镜像,它完整复刻了原版游戏体验。

3.1 拉取游戏镜像

执行以下命令拉取镜像:

docker pull pengbai/docker-supermario

这个镜像大小约200MB,使用国内镜像加速后,下载应该能在1分钟内完成。

3.2 运行游戏容器

使用以下命令启动容器:

docker run -d -p 8080:8080 --name supermario pengbai/docker-supermario

参数说明:

  • -d:后台运行容器
  • -p 8080:8080:将容器内部的8080端口映射到主机的8080端口
  • --name supermario:为容器指定一个易记的名称

检查容器是否正常运行:

docker ps

你应该能看到类似这样的输出:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a1b2c3d4e5f6 pengbai/docker-supermario "nginx -g 'daemon of…" 2 minutes ago Up 2 minutes 0.0.0.0:8080->8080/tcp supermario

3.3 本地访问测试

现在你可以在服务器本机使用curl测试:

curl http://localhost:8080

或者如果你有图形界面,可以直接在服务器浏览器访问http://localhost:8080

4. 配置公网访问

要让游戏能在公网访问,还需要进行一些额外配置。

4.1 防火墙设置

如果你的服务器启用了防火墙(如ufw或firewalld),需要放行8080端口:

对于ufw(Ubuntu常用):

sudo ufw allow 8080/tcp sudo ufw reload

对于firewalld(CentOS常用):

sudo firewall-cmd --permanent --add-port=8080/tcp sudo firewall-cmd --reload

4.2 云服务器安全组配置

如果你使用的是云服务器(如阿里云、腾讯云等),还需要在控制台配置安全组规则:

  1. 登录云服务商控制台
  2. 找到你的云服务器实例
  3. 进入安全组配置页面
  4. 添加入站规则:允许TCP协议的8080端口

4.3 获取公网访问地址

现在你可以通过http://<你的服务器公网IP>:8080访问游戏了。在浏览器中输入这个地址,就能看到熟悉的超级马里奥游戏界面。

游戏控制方式:

  • 方向键:移动
  • 空格键:跳跃
  • 回车键:开始游戏

5. 进阶配置:打造专属游戏站

基础的部署已经完成,但我们可以做得更专业一些,比如使用域名访问、配置HTTPS等。

5.1 使用Nginx反向代理

直接暴露8080端口不够优雅,我们可以使用Nginx作为反向代理。

首先安装Nginx:

# Ubuntu/Debian sudo apt install nginx # CentOS/RHEL sudo yum install nginx

然后创建配置文件/etc/nginx/conf.d/mario.conf

server { listen 80; server_name mario.yourdomain.com; # 替换为你的域名 location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

测试Nginx配置并重启:

sudo nginx -t sudo systemctl restart nginx

现在你可以通过http://mario.yourdomain.com访问游戏了。

5.2 配置HTTPS加密

为了安全起见,我们应该启用HTTPS。这里使用Let's Encrypt免费证书。

安装certbot工具:

# Ubuntu/Debian sudo apt install certbot python3-certbot-nginx # CentOS/RHEL sudo yum install certbot python3-certbot-nginx

获取证书并自动配置Nginx:

sudo certbot --nginx -d mario.yourdomain.com

按照提示操作后,你的游戏站就会自动启用HTTPS,并且certbot会设置自动续期。

5.3 使用Docker Compose管理服务

为了更方便地管理容器,我们可以使用Docker Compose。创建docker-compose.yml文件:

version: '3' services: mario: image: pengbai/docker-supermario container_name: supermario restart: unless-stopped ports: - "8080:8080"

然后使用以下命令启动服务:

docker-compose up -d

这样管理起来更加方便,也便于后续扩展。

6. 常见问题与解决方案

在实际部署过程中,可能会遇到一些问题,这里列出几个常见问题及解决方法。

6.1 端口冲突问题

如果8080端口已被占用,可以改用其他端口,比如:

docker run -d -p 5000:8080 --name supermario pengbai/docker-supermario

然后在Nginx配置中相应地修改proxy_pass地址。

6.2 容器自动重启

有时容器可能会意外停止,我们可以添加--restart参数确保容器自动重启:

docker run -d -p 8080:8080 --name supermario --restart unless-stopped pengbai/docker-supermario

6.3 游戏存档问题

默认情况下,游戏进度不会保存。如果需要保存游戏状态,可以考虑:

  1. 将游戏存档目录挂载到宿主机:
docker run -d -p 8080:8080 -v /path/on/host:/app/save --name supermario pengbai/docker-supermario
  1. 或者使用Docker卷:
docker volume create mario_saves docker run -d -p 8080:8080 -v mario_saves:/app/save --name supermario pengbai/docker-supermario

7. 扩展玩法:打造游戏门户

如果你想让这个游戏站更加丰富,可以考虑:

  • 添加更多经典游戏(如吃豆人、俄罗斯方块等)
  • 设置访问密码,限制只有知道密码的人才能玩
  • 添加游戏排行榜功能
  • 集成聊天室,让玩家可以交流

这些都可以通过组合不同的Docker容器来实现。例如,要添加吃豆人游戏:

docker run -d -p 8081:80 --name pacman rgielen/pacman

然后在Nginx中配置相应的反向代理规则。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询