centos7.6使用docker搭建dnf私服

服务端:

1: 配置SWAP虚拟内存

1.1 查看虚拟内存

swapon --show

1.2 创建 SWAP

# 创建一个文件并设置为 swap
fallocate -l 8G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
nano /etc/fstab

# 在最后一行粘贴以下内容,然后按 Crtl + X ,再按 Y ,然后回车
/swapfile swap swap defaults 0 0

# 再查看虚拟内存:
swapon --show

2:安装docker,并拉取镜像和启动容器

2.1 把yum包更新到最新

yum update -y

2.2 安装需要的软件包

yum install -y yum-utils device-mapper-persistent-data lvm2

2.3 安装docker-ce

# 配置阿里云仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 安装docker-ce
yum install docker-ce

2.4启动docker并加入开机启动

# 启动docker
systemctl start docker

# 加入开机自启动
systemctl enable docker

2.5 拉取镜像

docker pull 1995chen/dnf:centos7-2.0.2

2.6 创建一个目录用于挂载容器中的数据

mkdir -p /data/dnf

2.7 启动容器

# 初始化容器中的数据并挂载到宿主机
docker run --rm -v /data/dnf/log:/home/neople/game/log -v /data/dnf/mysql:/var/lib/mysql -v /data/dnf/data:/data 1995chen/dnf:centos7-2.0.2 /bin/bash /home/template/init/init.sh

#启动容器
docker run -d -e PUBLIC_IP=1.1.1.1 -e DNF_DB_ROOT_PASSWORD=88888888 -e GM_ACCOUNT=gmadmin -e GM_PASSWORD=gm123456 -v /data/dnf/log:/home/neople/game/log -v /data/dnf/mysql:/var/lib/mysql -v /data/dnf/data:/data -p 3000:3306/tcp -p 7600:7600/tcp -p 881:881/tcp -p 20303:20303/tcp -p 20303:20303/udp -p 20403:20403/tcp -p 20403:20403/udp -p 40403:40403/tcp -p 40403:40403/udp -p 7000:7000/tcp -p 7000:7000/udp -p 7001:7001/tcp -p 7001:7001/udp -p 7200:7200/tcp -p 7200:7200/udp -p 10011:10011/tcp -p 31100:31100/tcp -p 30303:30303/tcp -p 30303:30303/udp -p 30403:30403/tcp -p 30403:30403/udp -p 10052:10052/tcp -p 20011:20011/tcp -p 20203:20203/tcp -p 20203:20203/udp -p 30703:30703/udp -p 11011:11011/udp -p 2311-2313:2311-2313/udp -p 30503:30503/udp -p 11052:11052/udp --cpus=1 --memory=2g --memory-swap=-1 --shm-size=8g --name=dnf 1995chen/dnf:centos7-2.0.2

# PUBLIC_IP为公网IP地址,如果在局域网部署则用局域网IP地址,按实际需要替换
# GM_ACCOUNT为登录器用户名,建议替换
# GM_PASSWORD为登录器密码,建议替换
# DNF_DB_ROOT_PASSWORD为mysql root密码,容器启动是root密码会跟随该环境变量的变化自动更新

2.8 查看docker日志或者log日志

# 查看docker容器日志
docker logs -f dnf

# 查看Log日志
tail -f /data/dnf/log/siroco11/Log20240122.init 

遇到的问题及解决方案:

1:[!] Init ChannelType [!] Init ChannelType Fail
# 检查内存,调整启动命令配置,由于某些云服务商并未真正启用虚拟内存
free -h 

# 使用改命令查看默认配置
cat /proc/sys/vm/swappiness

# 临时调整的方法如下,我们调成60并再次查看
sysctl vm.swappiness=60
cat /proc/sys/vm/swappiness

# 要想永久调整的话,需要在/etc/sysctl.conf最后加上第二句代码
vim /etc/sysctl.conf
vm.swappiness = 60

# 重新加载配置
sysctl -p

# 参考:https://www.cnblogs.com/EasonJim/p/7777904.html、https://blog.itpub.net/29371470/viewspace-1250975

2:一直容器启动后一直报错avgping()

说明Script.pvf文件有问题,用客户端的Script.pvf文件把服务器 /data/dnf/data 目录下的覆盖掉再重启容器就行了。

客户端:

默认的网关信息:
网关端口: 881
通讯密钥: 763WXRBW3PFTC3IXPFWH
登录器版本: 20180307
登录器端口: 7600
GM账户: gm_user /容器中配置的账户
GM密码: gm_pass /容器中配置的密码

解压“DNF客户端(2018年2月更新).7z”文件,然后解压“DOF补丁大合集V7.6.7z”文件,把“DOF补丁大合集V7.6.7z”解压出来后的文件复制到客户端里面去,然后使用“统一网关6.4”生成登录器,再把生成之后的登录器复制到客户端的根目录。不需要打登陆器配套补丁;Script.pvf使用客户端自带的,即未加密pvf

文中提到的客户端文件请移步github下载:https://github.com/1995chen/dnf

posted @ 2024-01-24 10:57  Aminor~  阅读(128)  评论(0编辑  收藏  举报