runtimes-docker 是一个容器化镜像,旨在提供 DMOJ(一个开源在线判题系统)支持的多种编程语言运行时环境。该镜像将各类编程语言的编译工具、解释器及依赖库打包为标准化容器,确保代码执行环境的一致性、隔离性和可移植性,主要用于在线判题系统、编程教育平台或多语言代码测试场景中,作为代码编译与执行的基础环境。
集成 DMOJ 官方支持的主流编程语言环境,包括但不限于:
通过容器化技术实现运行时环境隔离,避免不同代码执行时的资源冲突或依赖干扰;内置基础安全限制,降低***代码执行风险。
统一的目录结构和环境变量配置,简化外部系统(如 DMOJ 判题核心)与容器的交互,支持通过配置文件或命令行参数快速调整运行参数。
基于精简基础镜像构建,减少资源占用;支持通过挂载卷动态扩展依赖库或工具链,适配定制化需求。
作为 DMOJ 或其他在线判题平台的代码执行节点,提供标准化的编译/解释环境,确保判题结果的准确性。
用于编程课程作业提交、自动评分系统,或学生代码调试环境,提供一致的语言支持。
在开发流程中作为临时测试环境,快速验证跨语言代码片段的编译或执行结果,无需在本地配置复杂依赖。
嵌入持续集成/部署 pipeline,用于自动化测试多语言项目的编译输出或运行时行为。
通过 Docker 命令拉取镜像(需替换 <image-source> 为实际镜像源,如私有仓库地址或官方镜像名):
bashdocker pull <image-source>/runtimes-docker:latest
4.3.1 交互式运行(用于调试)
以交互式终端模式启动容器,直接进入运行时环境:
bashdocker run -it --rm <image-source>/runtimes-docker:latest /bin/bash
-it:启用交互式终端;--rm:容器退出后自动删除,避免残留;/bin/bash:启动 bash 终端,可直接执行编译/解释命令(如 gcc、python3)。4.3.2 后台运行(作为服务节点)
通过挂载代码目录和配置文件,后台运行容器以接收外部任务:
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
4.4.1 环境变量
| 参数名 | 说明 | 默认值 |
|---|---|---|
RUNTIME_LANG | 指定默认激活的编程语言环境 | all(全部支持) |
WORKDIR | 容器内工作目录 | /app |
LOG_LEVEL | 运行日志级别(info/debug) | info |
4.4.2 挂载卷(Volumes)
| 本地路径 | 容器内路径 | 用途 |
|---|---|---|
/path/to/code | /app/code | 挂载待执行的代码文件 |
/path/to/config | /etc/dmoj/runtime | 覆盖默认运行时配置(如编译器参数) |
/path/to/cache | /var/cache/dmoj | 持久化编译缓存,加速重复执行 |
4.4.3 资源限制
建议通过 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 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务