饥荒

docker-compose.yml

version: '3.8'
services:
  dst:
    restart: always
    container_name: dst
    image: hujinbo23/dst-admin-go:1.5.0
    ports:
      - 8084:8082         # 管理后台(TCP)
      - 10999:10999/udp   # 游戏主端口(UDP)
      - 10998:10998/udp   # 游戏辅助端口(UDP)
    volumes:
      - ./dstsave:/root/.klei/DoNotStarveTogether  # 存档配置
      - ./dstsave/backup:/app/backup              # 自动备份
      - ./steamcmd:/app/steamcmd                   # SteamCMD
      - ./dst-dedicated-server:/app/dst-dedicated-server  # 游戏本体
    environment:
      - TZ=Asia/Shanghai              # 时区

  • 记得启动后放行端口

  • 然后在面板上把SteamCMD路径与dst-dedicated-server路径配好

/app/steamcmd
/app/dst-dedicated-server

查看服务器cpu主频

查看标称主频(官方参数)

lscpu | grep "Model name"
lscpu | egrep "Model name|CPU max MHz|CPU min MHz"

若输出如下,无频率信息

root@114514:~# lscpu | grep "Model name"
Model name:                           AMD EPYC 7702 64-Core Processor

则用

sudo dmidecode -t processor | grep "Speed"

没装dmidecode就安装一下

sudo apt install dmidecode -y

实时频率(单位是MHz与GHz之间是1000转换关系)

cat /proc/cpuinfo | grep "cpu MHz"

安装时查看最后10条日志

docker logs --tail 10 dst

docker desktop容器内 SteamCMD 安装失败原因

这是 SteamCMD 在容器内更新自身 / 验证 DST Dedicated Server 时无法正确执行,陷入无限循环,常见于:

  • 容器内 SteamCMD 缺失依赖 / 无法执行 DST Dedicated Server 二进制文件,导致验证失败后无限重试。

  • 使用 NTFS (C:/) 挂载路径时,容器内解压的二进制文件无执行权限,SteamCMD 校验报 silent error,陷入循环

  • steamcmd.sh 尝试 launch DST Dedicated Server,但因执行权限不足或路径错误反复 fallback 重试。

为什么是挂载方式导致的

你当前使用:

volumes:
  - C:/mydata/dst-admin-go/steamcmd:/app/steamcmd
  - C:/mydata/dst-admin-go/dst-dedicated-server:/app/dst-dedicated-server

本质:

  • Docker Desktop + WSL2 后端下,通过 9p/Plan9 挂载 Windows NTFS 路径

  • NTFS 不支持 Linux 执行权限 (x),SteamCMD 拉取 DST Dedicated Server 后无法执行验证/运行 DST 二进制。

  • 导致 SteamCMD 校验时不断失败重试,形成死循环。

docker desktop上尝试的

version: '3.8'
services:
  dst:
    restart: always
    container_name: dst
    image: hujinbo23/dst-admin-go:1.5.0
    ports:
      - 8084:8082         # 管理后台(TCP)
      - 10999:10999/udp   # 游戏主端口(UDP)
      - 10998:10998/udp   # 游戏辅助端口(UDP)
    volumes:
      - C:/mydata/dst-admin-go/dstsave:/root/.klei/DoNotStarveTogether  # 存档配置
      - C:/mydata/dst-admin-go/dstsave/backup:/app/backup              # 自动备份
      - C:/mydata/dst-admin-go/steamcmd:/app/steamcmd                   # SteamCMD
      - C:/mydata/dst-admin-go/dst-dedicated-server:/app/dst-dedicated-server  # 游戏本体
    environment:
      - TZ=Asia/Shanghai              # 时区
    deploy:
      resources:
        limits:
          cpus: "2.0"
          memory: 4G

不启动docker desktop

直接wsl,可进入正常的linux

从windos目录复制文件,这里比别的教程中多了host这个中间目录(别的都是/mnt/c/...)

这里把yml复制过去好像没啥用,这里的wsl中没docker,也没其他常用工具,还是在开启docker desktop后再Windows下启动docker,这里只是生成挂载文件目录

mkdir -p ~/data/docker_data/dst/dstsave
mkdir -p ~/data/docker_data/dst/backup
mkdir -p ~/data/docker_data/dst/steamcmd
mkdir -p ~/data/docker_data/dst/dst-dedicated-server

参数:-p 确保目录名称存在,如果目录不存在的就新创建一个。
~/../mnt/host/c/mydata/dst/docker-compose.yml ~/data/docker_data/dst/docker-compose.yml

给予递归目录所有用户所有权限

chmod -R 777 ~/data

查看权限
ls -l