当前位置: 首页 > ops >正文

linux wsl2 docker 镜像复用快速方法

GitHub项目中的devcontainer.json、Dockerfile构建了一个A项目的镜像环境,现在我有一个文件夹,文件夹中只有一个b.py文件,此时我希望使用A项目的环境,如何实现?

注意: 建议使用下面的方法2

解决方案:将单个 Python 文件(b.py)与现有项目环境集成

您可以通过以下两种方式之一实现,推荐使用 Docker 方式(更灵活):

方法一:使用 Docker 命令行(简单快速)
  1. 确保 Docker 环境准备就绪

    # 构建 A 项目的镜像(如果尚未构建)
    docker build -t a-project-env -f /path/to/A/Dockerfile /path/to/A
    
  2. 运行容器并执行 b.py

    docker run -it --rm --gpus all \-v /path/to/b_folder:/workspace \-w /workspace \a-project-env \python b.py
    
方法二:使用 VS Code Dev Containers(最佳开发体验)
  1. 创建项目结构

    b_folder/
    ├── .devcontainer/  # 从 A 项目复制
    │   ├── devcontainer.json
    │   └── Dockerfile
    └── b.py
    
  2. 修改 devcontainer.json

    {"name": "A Project Environment","build": {"dockerfile": "./Dockerfile","context": "."},"postCreateCommand": "",  // 清空此命令"workspaceFolder": "/workspace",// 其他设置保持不变...
    }
    
  3. 在 VS Code 中使用容器

    • 在 VS Code 中打开 b_folder
    • F1 > Remote-Containers: Reopen in Container
    • 等待容器构建和启动
    • 在 VS Code 终端中运行 python b.py
方法三:直接使用 Docker 镜像(交互式开发)
  1. 启动交互式容器

    docker run -it --rm --gpus all \-v /path/to/b_folder:/workspace \-v /tmp/.X11-unix:/tmp/.X11-unix \-e DISPLAY=$DISPLAY \-w /workspace \a-project-env \/bin/bash
    
  2. 在容器内操作

    # 在容器内
    python b.py# 或安装编辑器进行开发
    apt update && apt install -y nano
    nano b.py
    

关键配置说明

  1. 路径映射

    -v /host/path:/container/path
    
    • 将主机上的 b_folder 映射到容器内的 /workspace
    • 确保 Python 文件可访问
  2. 工作目录

    -w /workspace
    
    • 设置容器启动后的工作目录
    • 直接运行 python b.py 即可
  3. GPU 支持

    --gpus all
    
    • 确保 JAX 可以访问 GPU
    • 需要 NVIDIA Container Toolkit

验证是否成功

在容器内运行:

# b.py 内容
import jax
print("可用设备:", jax.devices())
print("JAX 版本:", jax.__version__)
print("后端平台:", jax.lib.xla_bridge.get_backend().platform)

预期输出:

可用设备: [CudaDevice(id=0)]
JAX 版本: 0.6.2.dev20250601
后端平台: gpu

额外建议:创建可重用模板

创建模板目录结构:

project_template/
├── .devcontainer/
│   ├── devcontainer.json
│   └── Dockerfile
├── .gitignore
└── README.md

以后新建项目时只需:

cp -r project_template new_project
cd new_project
# 添加你的代码文件

这样所有新项目都能复用 A 项目的环境配置,同时保持各自独立。

http://www.xdnf.cn/news/14947.html

相关文章:

  • 分布式理论:CAP、Base理论
  • 无重叠区间问题
  • HDLBits刷题笔记和一些拓展知识(十一)
  • git-安装 Gerrit Hook 自动生成changeid
  • Java-Collections、Map
  • 力扣-136.只出现一次的数字
  • C语言宏替换比较练习
  • .NET9 实现对象深拷贝和浅拷贝的性能测试
  • C#使用Semantic Kernel实现Embedding功能
  • 自动化一次通过率
  • LLM探索的时代
  • 【web安全】SQLMap 参数深度解析:--risk 与 --level 详解
  • leetcode202.快乐数
  • 【数据结构】复杂度分析
  • 【王树森推荐系统】召回11:地理位置召回、作者召回、缓存召回
  • LeetCode 1248.统计优美子数组
  • Coze智能体工作流:1分钟生成10个儿童卡通童话故事视频,无需剪辑
  • 一天一道Sql题(day02)
  • 单机分布式一体化数据库的架构设计与优化
  • Android Handler机制与底层原理详解
  • 【芯片测试篇】:93K测试机I2C的设置和调试
  • 可达性分析算法Test1
  • 基于springboot的非遗传承宣传平台
  • 短视频矩阵管理平台的崛起:源头厂商的深度解析
  • 车载通信架构 --- 以太网相关网络安全
  • c++文件操作
  • Git 安装避坑指南:从环境检查到高级配置的全流程解析
  • Java项目:基于SSM框架实现的旅游协会管理系统【ssm+B/S架构+源码+数据库+毕业论文】
  • 猎板解析PCB低损耗基材:AI与高频通信的隐形推手
  • 谁主沉浮:人工智能对未来信息技术发展路径的影响研究