玩转Docker | 使用Docker部署推箱子网页小游戏

玩转Docker | 使用Docker部署推箱子网页小游戏

  • 一、项目介绍
    • 项目简介
    • 项目预览
  • 二、系统要求
    • 环境要求
    • 环境检查
      • Docker版本检查
      • 检查操作系统版本
  • 三、部署推箱子网页小游戏
    • 下载镜像
    • 创建容器
    • 检查容器状态
    • 检查服务端口
    • 安全设置
  • 四、访问推箱子网页小游戏
  • 五、总结

一、项目介绍

项目简介

  • 箱子网页小游戏介绍:

推箱子(Sokoban)是一款经典的益智类游戏,首次发行于1981年,由Thinking Rabbit公司开发。这款游戏的核心玩法是玩家控制一个角色在一个有限的二维空间内移动,并推动木箱到指定的位置。游戏的目标是在不将任何箱子推入死角的情况下,把所有的箱子都推到目标位置上。

项目预览

在这里插入图片描述

二、系统要求

环境要求

Docker 部署环境要求:

类别详细信息版本/要求
操作系统Linux (Ubuntu 20.04, CentOS 7)仅支持X86架构
Docker EngineDocker Enginev19.03 或更高版本
Docker ComposeDocker Composev2.0 或更高版本

说明:

  • 操作系统: 本项目支持的Linux发行版包括Ubuntu 20.04和CentOS 7等,且仅限于X86架构的设备。
  • Docker Engine: 需要安装v19.03或更高版本的Docker Engine。
  • Docker Compose: 需要安装v2.0或更高版本的Docker Compose。

环境检查

Docker版本检查

  • 检查Docker版本
root@wangge:~# docker -v
Docker version 24.0.7, build 24.0.7-0ubuntu2~22.04.1
  • 检查当前Docker服务状态
root@wangge:~# systemctl status docker
● docker.service - Docker Application Container EngineLoaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)Active: active (running) since Tue 2024-10-01 14:59:27 UTC; 3 weeks 6 days ago
TriggeredBy: ● docker.socketDocs: https://docs.docker.comMain PID: 2481 (dockerd)Tasks: 10Memory: 121.2MCPU: 12.696sCGroup: /system.slice/docker.service
  • 检查当前docker compose版本
root@wangge:~# docker compose version
Docker Compose version v2.19.1

检查操作系统版本

  • 查看当前实践环境的系统版本,当前宿主机的操作系统版本为Ubuntu 22.04.1 LTS
root@wangge:~# docker compose version
Docker Compose version v2.19.1
root@wangge:~# cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.1 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.1 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

三、部署推箱子网页小游戏

下载镜像

拉取推箱子网页小游戏斗地主网页小游戏项目的容器镜像,如下所示:

root@wangge:~# docker pull swr.cn-north-4.myhuaweicloud.com/jeven/sokoban:v1.0
v1.0: Pulling from jeven/sokoban
550fe1bea624: Pull complete
af3988949040: Pull complete
d6642feac728: Pull complete
c20f0a205eaa: Pull complete
d9a28c88a4e8: Pull complete
Digest: sha256:924afeb83309bdd774031dad7e45b6943ee8a60ed441829c265b9924b5fdae57
Status: Downloaded newer image for swr.cn-north-4.myhuaweicloud.com/jeven/sokoban:v1.0
swr.cn-north-4.myhuaweicloud.com/jeven/sokoban:v1.0

在这里插入图片描述

创建容器

执行以下命令,快速创建推箱子项目容器。

docker run -d \--restart always \--name sokoban \-p 9560:80 \swr.cn-north-4.myhuaweicloud.com/jeven/sokoban:v1.0 

也可以使用docker compose方式来创建容器,在该部署文件中进行资源限制,如果资源紧张或部署失败,可尝试将resources资源限制部分注释掉。

version: '3'services:sokoban:image: swr.cn-north-4.myhuaweicloud.com/jeven/sokoban:v1.0 container_name: sokobanrestart: alwaysports:- 9560:80deploy:resources:limits:cpus: "2.00"memory: 1Greservations:cpus: "1.00"memory: 200M
  • 执行以下命令,创建推箱子项目容器。
docker compose up -d

检查容器状态

当创建容器完毕后,我们需要确认容器是否正常启动。

root@wangge:/docker/sokoban# docker compose ps
NAME                IMAGE                                                 COMMAND                  SERVICE             CREATED             STATUS              PORTS
sokoban             swr.cn-north-4.myhuaweicloud.com/jeven/sokoban:v1.0   "nginx -g 'daemon of…"   sokoban             40 seconds ago      Up 38 seconds       0.0.0.0:9560->80/tcp, :::9560->80/tcp

检查服务端口

  • 执行以下命令,检查服务端口。
root@wangge:/docker/sokoban# ss -tunlp | grep 9560
tcp   LISTEN 0      4096          0.0.0.0:9560       0.0.0.0:*    users:(("docker-proxy",pid=92415,fd=4))
tcp   LISTEN 0      4096             [::]:9560          [::]:*    users:(("docker-proxy",pid=92422,fd=4))

安全设置

  • 执行以下命令,关闭防火墙。如果不想关闭防火墙,则需要放行相关服务端口。
systemctl stop firewalld && systemctl disable firewalld
  • 关闭selinux服务
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

四、访问推箱子网页小游戏

我们在浏览器访问:http://192.168.3.251:9560/,(IP+宿主机映射端口),即可正常访问到推箱子网页小游戏。

在这里插入图片描述

在这里插入图片描述

五、总结

通过使用Docker部署推箱子网页小游戏,我们体验到了容器化技术带来的便捷与高效。整个过程包括拉取镜像、运行容器以及配置端口映射,仅需几条简单的命令便完成了游戏的快速部署。这种部署方式不仅简化了环境配置的复杂性,还确保了游戏在不同系统上的一致性和可移植性。最终,我们在本地浏览器中顺利访问并游玩了这款经典益智游戏,深刻感受到了Docker在简化应用部署流程方面的强大能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/58282.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是服务器?服务器与客户端的关系?本地方访问不了网址与服务器访问不了是什么意思?有何区别

服务器是一种高性能的计算机,它通过网络为其他计算机(称为客户端)提供服务。这些服务可以包括文件存储、打印服务、数据库服务或运行应用程序等。服务器通常具有强大的处理器、大量的内存和大容量的存储空间,以便能够处理多个客户…

Iperius Backup(数据备份软件) v8.3.0 中文免费版

下载: 【1】https://pan.quark.cn/s/19ef716c02d5 【2】https://drive.uc.cn/s/197acba8d8d94?public1 Iperius Backup是一款专业的备份还原软件,功能强大,支持DAT备份、LTO备份、NAS备份、磁带备份、RDX驱动器、USB备份,满足用…

SOES(EtherCAT)从站API梳理

1. void ESC_config (esc_cfg_t * cfg); 功能:配置EtherCAT从站。参数:esc_cfg_t *cfg 指向配置结构体的指针,该结构体包含从站的配置参数。解释:该函数用于初始化或更新从站的配置,如通信参数、同步管理器设置等。 …

Java Lock Condition 总结

前言 相关系列 《Java & Lock & 目录》(持续更新)《Java & Lock & Condition & 源码》(学习过程/多有漏误/仅作参考/不再更新)《Java & Lock & Condition & 总结》(学习总结/最新最准…

K8S测试pod内存和CPU资源不足

只设置requests参数 mysql主从pod启动后监控 读压测之后 同时设置limits和requests,只调低内存值 监控 压力测试 同时设置limits和requests,只调低CPU值 初始状态 开始压测 结论 对于CPU,如果pod中服务使用CPU超过设置的limits&…

谷歌云GCP基础概念讲解

概览 云的基础是虚拟化:服务器,存储,网络。服务器是远程计算机的逻辑分区。存储是物理硬盘的逻辑划分。网络则是虚拟私有云。 谷歌是唯一一个拥有全球私有基础设施的公司;他们的谷歌云基础设施没有任何一部分通过公共互联网。换句…

绿盟科技发布三季度报告,收入略增,亏损收窄,经营性净现金流同比翻倍

10月30日,绿盟科技发布2024年三季度报告。2024年公司前三季度实现营业收入12.74亿元,同比增长5.57%;毛利率59.50%,同比增长4.76个百分点;期间费用总额同比下降7.68%;公司实现归属于上市公司股东的净利润-3.…

【云原生】云原生后端详解:架构与实践

目录 引言一、云原生后端的核心概念1.1 微服务架构1.2 容器化1.3 可编排性1.4 弹性和可伸缩性 二、云原生后端的架构示意图三、云原生后端的最佳实践3.1 使用服务网格3.2 监控与日志管理3.3 CI/CD 流水线3.4 安全性 总结参考资料 引言 随着云计算的迅猛发展,云原生…

Python 爬虫的寻宝大冒险:如何捕获 API 数据的宝藏

在这个信息爆炸的数字时代,数据就像是隐藏在网络深处的宝藏,等待着勇敢的探险家去发现。今天,我们要讲述的是如何成为一名 Python 爬虫探险家,装备你的代码工具,深入 API 的迷宫,捕获那些珍贵的数据宝藏。 …

C++-类与对象总结

const函数声明 1. 修饰成员函数,不会改变成员变量: - a function b const (c){}: in member function means, all member properties in the function cannot be modified. 2.修饰形参,输入参数在函数中不会被更改,提高程序的…

《近似线性可分支持向量机的原理推导》 拉格朗日函数 公式解析

本文是将文章《近似线性可分支持向量机的原理推导》中的公式单独拿出来做一个详细的解析,便于初学者更好的理解。 公式 9-41 解释: L ( w , b , ξ , α , μ ) 1 2 ∥ w ∥ 2 C ∑ i 1 N ξ i − ∑ i 1 N α i ( y i ( w T x i b ) − ( 1 − ξ …

【云原生】云原生后端:安全性最佳实践

目录 引言一、身份管理1.1 身份验证1.2 身份授权 二、数据加密2.1 数据静态加密2.2 数据传输加密2.3 密钥管理 三、网络安全3.1 网络隔离3.2 防火墙与入侵检测3.3 安全组与网络访问控制列表 (NACL) 结论 引言 在云原生架构中,安全性是一个至关重要的考量。随着应用…

C++,STL 051(24.10.28)

内容 1.map容器的构造函数。 2.map容器的赋值操作。 运行代码 #include <iostream> #include <map>using namespace std;void printMap(map<int, int> &m) {for (map<int, int>::iterator it m.begin(); it ! m.end(); it){cout << &quo…

《链表篇》---环形链表II(返回节点)

题目传送门 方法一&#xff1a;哈希表&#xff08;与环形链表类似&#xff09; 很容易就可以找到链表的相交位置。 public class Solution {public ListNode detectCycle(ListNode head) {if(head null || head.next null){return null;}Set<ListNode> visited new Ha…

从0开始深度学习(17)——数值稳定性和模型初始化

在每次训练之前&#xff0c;都会对模型的参数进行初始化&#xff0c;初始化方案的选择在神经网络学习中起着举足轻重的作用&#xff0c; 它对保持数值稳定性至关重要。 我们选择哪个函数以及如何初始化参数可以决定优化算法收敛的速度有多快。 糟糕选择可能会导致我们在训练时遇…

重学SpringBoot3-怎样优雅停机

更多SpringBoot3内容请关注我的专栏&#xff1a;《SpringBoot3》 期待您的点赞&#x1f44d;收藏⭐评论✍ 重学SpringBoot3-怎样优雅停机 1. 什么是优雅停机&#xff1f;2. Spring Boot 3 优雅停机的配置3. Tomcat 和 Reactor Netty 的优雅停机机制3.1 Tomcat 优雅停机3.2 Reac…

【C++初阶】模版入门看这一篇就够了

文章目录 1. 泛型编程2. 函数模板2. 1 函数模板概念2. 2 函数模板格式2. 3 函数模板的原理2. 4 函数模板的实例化2. 5 模板参数的匹配原则2. 6 补充&#xff1a;使用调试功能观察函数调用 3. 类模板3 .1 类模板的定义格式3. 2 类模板的实例化 1. 泛型编程 在C语言中&#xff0…

动态规划-子序列问题——1027.最长等差数列

1.题目解析 题目来源&#xff1a;1027.最长递增子序列——力扣 测试用例 2.算法原理 1.状态表示 等差数列至少是三个数&#xff0c;所以一维数组显然无法满足状态表示&#xff0c;所以需要开辟一个二维数组来表示&#xff0c;二维数组的两个下标分别是倒数第一与倒数第二个数 …

【JSON相关漏洞(Hijacking+Injection)挖掘技巧及实战案例全汇总】

JSON相关漏洞&#xff08;HijackingInjection&#xff09;挖掘技巧及实战案例全汇总 本文一是在为测试过程中遇到json返回格式时提供测试思路&#xff0c;二是几乎所有国内的资料都混淆了json和jsonp的区别——这是两种技术&#xff1b;以及json和jsonp hijacking的区别——这…

基于知识图谱的设备问答系统

你是不是还在为毕业设计苦恼&#xff1f;今天我就来给大家分享一款基于知识图谱的设备问答系统&#xff0c;不仅技术领先&#xff0c;而且非常适合用作毕业设计项目&#xff0c;帮助你轻松通过&#xff01; 项目简介 这个设备问答系统基于Django&#xff08;后端框架&#xf…