dmoj/runtimes-tier1runtimes-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)收集至外部系统。

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务