runtimes-docker 是一个容器化镜像,旨在提供 DMOJ(一个开源在线判题系统)支持的多种编程语言运行时环境。该镜像将各类编程语言的编译工具、解释器及依赖库打包为标准化容器,确保代码执行环境的一致性、隔离性和可移植性,主要用于在线判题系统、编程教育平台或多语言代码测试场景中,作为代码编译与执行的基础环境。
集成 DMOJ ***支持的主流编程语言环境,包括但不限于:
通过容器化技术实现运行时环境隔离,避免不同代码执行时的资源冲突或依赖干扰;内置基础安全限制,降低***代码执行风险。
统一的目录结构和环境变量配置,简化外部系统(如 DMOJ 判题核心)与容器的交互,支持通过配置文件或命令行参数快速调整运行参数。
基于精简基础镜像构建,减少资源占用;支持通过挂载卷动态扩展依赖库或工具链,适配定制化需求。
作为 DMOJ 或其他在线判题平台的代码执行节点,提供标准化的编译/解释环境,确保判题结果的准确性。
用于编程课程作业提交、自动评分系统,或学生代码调试环境,提供一致的语言支持。
在开发流程中作为临时测试环境,快速验证跨语言代码片段的编译或执行结果,无需在本地配置复杂依赖。
嵌入持续集成/部署 pipeline,用于自动化测试多语言项目的编译输出或运行时行为。
通过 Docker 命令拉取镜像(需替换 <image-source> 为实际镜像源,如私有仓库地址或***镜像名):
bashdocker pull <image-source>/runtimes-docker:latest
以交互式终端模式启动容器,直接进入运行时环境:
bashdocker run -it --rm <image-source>/runtimes-docker:latest /bin/bash
-it:启用交互式终端;--rm:容器退出后自动删除,避免残留;/bin/bash:启动 bash 终端,可直接执行编译/解释命令(如 gcc、python3)。通过挂载代码目录和配置文件,后台运行容器以接收外部任务:
bashdocker run -d \ --name dmoj-runtime \ -v /path/to/local/code:/app/code \ # 挂载本地代码目录到容器内/app/code -v /path/to/config:/etc/dmoj/runtime \ # 挂载运行时配置文件 --user 1000:1000 \ # 指定非root用户运行,增强安全性 --memory 2g --cpus 1 \ # 限制资源使用(2GB内存,1核CPU) <image-source>/runtimes-docker:latest
| 参数名 | 说明 | 默认值 |
|---|---|---|
RUNTIME_LANG | 指定默认激活的编程语言环境 | all(全部支持) |
WORKDIR | 容器内工作目录 | /app |
LOG_LEVEL | 运行日志级别(info/debug) | info |
| 本地路径 | 容器内路径 | 用途 |
|---|---|---|
/path/to/code | /app/code | 挂载待执行的代码文件 |
/path/to/config | /etc/dmoj/runtime | 覆盖默认运行时配置(如编译器参数) |
/path/to/cache | /var/cache/dmoj | 持久化编译缓存,加速重复执行 |
建议通过 docker run 参数限制容器资源,避免单个任务占用过多主机资源:
--memory <size>:限制内存(如 2g、512m);--cpus <number>:限制 CPU 核心数(如 1、0.5);--pids-limit <number>:限制进程数(如 50)。适用于多容器部署场景(如与 DMOJ 判题核心联动):
yamlversion: '3' services: runtime: image: <image-source>/runtimes-docker:latest container_name: dmoj-runtime-node volumes: - ./local_code:/app/code:ro # 只读挂载代码目录 - ./runtime_config:/etc/dmoj/runtime:ro environment: - RUNTIME_LANG=python3,cpp - LOG_LEVEL=debug deploy: resources: limits: cpus: '1' memory: 2G reservations: cpus: '0.5' memory: 1G user: "1000:1000" restart: unless-stopped
latest 标签镜像以获取语言环境更新(如编译器版本升级);--user 参数指定),并限制挂载目录权限为只读(ro);docker run --rm <image> /bin/bash -c "dmoj-runtime-list" 命令查看;stdout,可通过 Docker 日志驱动(如 json-file、syslog)收集至外部系统。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429