【云原生之Docker实战】使用docker部署家庭DOS游戏服务器
一、DOS游戏网页版介绍
该项目可以在web页面运行dos游戏,都是经典的DOS游戏,具体介绍可以浏览docker hub上oldiy/dosgame-web-docker镜像介绍。
二、检查宿主机系统版本
[root@node ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
三、检查本地docker环境
1.检查docker服务状态
[root@node ~]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2022-09-06 21:06:38 CST; 1 weeks 5 days ago
Docs: https://docs.docker.com
Main PID: 10785 (dockerd)
Tasks: 53
Memory: 4.1G
CGroup: /system.slice/docker.service
├─ 10785 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
├─ 95385 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8165 -container-ip 192.168.160.4 -container-port 80
├─ 95391 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 8165 -container-ip 192.168.160.4 -container-port 80
├─104301 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8177 -container-ip 192.168.176.3 -container-port 80
└─104308 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 8177 -container-ip 192.168.176.3 -container-port 80
Sep 14 01:01:02 node dockerd[10785]: time="2022-09-14T01:01:02.263068066+08:00" level=info msg="ignoring event" container=114c42a31d2ef7c29be9bcc71392507b39f1416...TaskDelete"
Sep 14 01:01:37 node dockerd[10785]: time="2022-09-14T01:01:37.436565470+08:00" level=info msg="Firewalld: interface br-87e02fde8c79 already part of docker zone, returning"
Sep 14 01:01:37 node dockerd[10785]: time="2022-09-14T01:01:37+08:00" level=info msg="Firewalld: docker zone already exists, returning"
Sep 14 01:01:37 node dockerd[10785]: time="2022-09-14T01:01:37+08:00" level=info msg="Firewalld: docker zone already exists, returning"
Sep 14 01:01:38 node dockerd[10785]: time="2022-09-14T01:01:38+08:00" level=info msg="Firewalld: docker zone already exists, returning"
Sep 14 01:06:07 node dockerd[10785]: time="2022-09-14T01:06:07.803105805+08:00" level=info msg="ignoring event" container=16694b04c408cf6c68ba6a189e329c200bf8818...TaskDelete"
Sep 14 01:06:08 node dockerd[10785]: time="2022-09-14T01:06:08+08:00" level=info msg="Firewalld: docker zone already exists, returning"
Sep 16 23:13:57 node dockerd[10785]: time="2022-09-16T23:13:57.266399285+08:00" level=info msg="Firewalld: interface br-85d9e0c5af94 already part of docker zone, returning"
Sep 16 23:13:57 node dockerd[10785]: time="2022-09-16T23:13:57+08:00" level=info msg="Firewalld: docker zone already exists, returning"
Sep 16 23:13:58 node dockerd[10785]: time="2022-09-16T23:13:58+08:00" level=info msg="Firewalld: docker zone already exists, returning"
Hint: Some lines were ellipsized, use -l to show in full.
2.检查docker版本
[root@node ~]# docker version
Client: Docker Engine - Community
Version: 20.10.17
API version: 1.41
Go version: go1.17.11
Git commit: 100c701
Built: Mon Jun 6 23:05:12 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.17
API version: 1.41 (minimum version 1.12)
Go version: go1.17.11
Git commit: a89b842
Built: Mon Jun 6 23:03:33 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.6
GitCommit: 10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
runc:
Version: 1.1.2
GitCommit: v1.1.2-0-ga916309
docker-init:
Version: 0.19.0
GitCommit: de40ad0
四、下载oldiy/dosgame-web-docker镜像
[root@node focalboard]# docker pull oldiy/dosgame-web-docker
Using default tag: latest
latest: Pulling from oldiy/dosgame-web-docker
169185f82c45: Pull complete
15535b654dbe: Pull complete
24c041d71669: Pull complete
Digest: sha256:082e2f84cb8a3212f1ff1e2d66f92f9e7d84673cd25e0667e75f86ee48a7d639
Status: Downloaded newer image for oldiy/dosgame-web-docker:latest
docker.io/oldiy/dosgame-web-docker:latest
五、部署游戏服务器
1.创建容器
[root@node focalboard]# docker run -d --name dosgame -p 262:262 oldiy/dosgame-web-docker:latest
315ee5d83d65ea64bfd5d3bdd696ba89e136901c926713f1f7e2e80b8ab5d313
2.查看容器状态
[root@node focalboard]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
315ee5d83d65 oldiy/dosgame-web-docker:latest "/bin/sh -c 'gunicor…" 4 seconds ago Up 2 seconds 0.0.0.0:262->262/tcp, :::262->262/tcp dosgame
3.查看容器日志
[root@node focalboard]# docker logs dosgame
[2022-09-26 09:40:52 +0000] [1] [INFO] Starting gunicorn 19.9.0
[2022-09-26 09:40:52 +0000] [1] [INFO] Listening at: http://0.0.0.0:262 (1)
[2022-09-26 09:40:52 +0000] [1] [INFO] Using worker: sync
[2022-09-26 09:40:52 +0000] [8] [INFO] Booting worker with pid: 8
[2022-09-26 09:40:52 +0000] [9] [INFO] Booting worker with pid: 9
[2022-09-26 09:40:52 +0000] [10] [INFO] Booting worker with pid: 10
[2022-09-26 09:40:52 +0000] [11] [INFO] Booting worker with pid: 11
[2022-09-26 09:40:52 +0000] [12] [INFO] Booting worker with pid: 12
[2022-09-26 09:48:29 +0000] [1] [CRITICAL] WORKER TIMEOUT (pid:10)
[2022-09-26 09:48:29 +0000] [10] [INFO] Worker exiting (pid: 10)
[2022-09-26 09:48:29 +0000] [13] [INFO] Booting worker with pid: 13
[2022-09-26 09:49:41 +0000] [1] [CRITICAL] WORKER TIMEOUT (pid:12)
[2022-09-26 09:49:41 +0000] [12] [INFO] Worker exiting (pid: 12)
[2022-09-26 09:49:41 +0000] [14] [INFO] Booting worker with pid: 14
六、访问游戏服务器首页
七、进入游戏界面