SuperAPI AI 工具集

docker

部署与运维

查看项目

更新于 10-15 12:26

技能介绍

用途

Docker 技能用于在隔离的 Docker 容器中运行研究代码,同时让 Feynman 保持在宿主机上运行。容器获得项目文件并执行命令,结果会自动同步回宿主机。

适用场景包括:

  • 用户在 /replicate 或 /autoresearch 中选择「Docker Sandbox」作为执行环境
  • 运行来自论文仓库的不可信代码
  • 需要安装软件包或修改系统状态的实验
  • 用户希望以安全、隔离的方式为 Feynman 工作流运行研究代码的任何情况

工作原理

  1. 为研究代码构建或拉取一个合适的基础镜像
  2. 将项目目录挂载到容器中
  3. 在容器内运行实验命令
  4. 结果写回挂载的目录

在容器中运行命令

针对 Python 研究代码(最常见):

docker run --rm -v "$(pwd)":/workspace -w /workspace python:3.11 bash -c "
  pip install -r requirements.txt &&
  python train.py
"

针对带有 Dockerfile 的项目:

docker build -t feynman-experiment .
docker run --rm -v "$(pwd)/results":/workspace/results feynman-experiment

针对 GPU 工作负载:

docker run --rm --gpus all -v "$(pwd)":/workspace -w /workspace pytorch/pytorch:latest bash -c "
  pip install -r requirements.txt &&
  python train.py
"

选择基础镜像

按研究类型选择:

  • Python 机器学习 / 深度学习:pytorch/pytorch:latest 或 tensorflow/tensorflow:latest-gpu
  • Python 通用:python:3.11
  • Node.js:node:20
  • R / 统计:rocker/r-ver:4
  • Julia:julia:1.10
  • 多语言:ubuntu:24.04 并手动安装所需环境

持久化容器

对于迭代式实验(如 /autoresearch),创建一个命名容器而不是使用 --rm。根据实验选择一个有描述性的名称:

docker create --name <name> -v "$(pwd)":/workspace -w /workspace python:3.11 tail -f /dev/null
docker start <name>
docker exec <name> bash -c "pip install -r requirements.txt"
docker exec <name> bash -c "python train.py"

这样可以在多次迭代之间保留已安装的软件包。清理方式:

docker stop <name> && docker rm <name>

注意事项

  • 挂载的工作区会自动将结果同步回宿主机
  • 容器默认启用网络——如需完全隔离,可添加 --network none
  • 如需 GPU 访问,Docker 必须配置 NVIDIA Container Toolkit