Windows 11 + RTX 5060 + WSL2 Ubuntu + NVIDIA DGL 容器

复制代码
# 1. 先进入 WSL Ubuntu
wsl

# 2. 查看已经创建的容器
docker ps -a --format "table {{.Names}}\t{{.Status}}\t{{.Image}}"

# 3. 如果看到 dgl_tkgr,就进入这个通用容器
docker start -ai dgl_tkgr

#删除容器
docker rm -f mlemkd_dgl
docker ps -a --format "table {{.Names}}\t{{.Status}}\t{{.Image}}"



# 1. 进入 WSL,如果你已经在 hearain@hearain:~$ 这种界面,可以不用执行这一行
wsl

# 2. 检查显卡
nvidia-smi

# 3. 检查 Docker 是否能调用 GPU
docker run --rm --gpus all nvidia/cuda:12.8.0-base-ubuntu22.04 nvidia-smi

# 4. 确保 NVIDIA DGL 镜像已经下载
docker pull nvcr.io/nvidia/dgl:25.01-py3

# 5. 删除同名旧容器,避免冲突
docker rm -f dgl_itsmr

# 6. 新建并进入容器,挂载整个 E:\ITSMR
docker run --gpus all -it \
  --name dgl_itsmr \
  -v /mnt/e/ITSMR:/workspace/ITSMR \
  nvcr.io/nvidia/dgl:25.01-py3 bash


cd /workspace/ITSMR/Baselines/TKGR/MLEMKD

ls

python -c "import torch; import dgl; print('torch:', torch.__version__); print('cuda:', torch.version.cuda); print('dgl:', dgl.__version__); print('cuda available:', torch.cuda.is_available()); print('gpu:', torch.cuda.get_device_name(0))"

pip install tqdm pandas rdflib numpy scipy scikit-learn

sed -i 's/\r$//' ./scripts/run.sh

bash ./scripts/run.sh

wsl

docker start -ai dgl_itsmr
docker exec -it dgl_itsmr bash


# 查看正在运行的容器
docker ps

# 查看所有容器,包括已经停止的
docker ps -a

# 只显示容器名字
docker ps -a --format "table {{.Names}}\t{{.Status}}\t{{.Image}}"

# 查看某个容器是否存在,比如 dgl_tkgr
docker ps -a | grep dgl_tkgr

# 查看某个容器是否存在,比如 mlemkd_dgl
docker ps -a | grep mlemkd_dgl

############################################################
# Windows 11 + RTX 5060 / 5060 Ti + WSL2 + NVIDIA DGL 容器
# 以后进入不同文件夹 / 不同项目的完整处理方法
############################################################


############################################################
# 一、先判断你现在在哪里
############################################################

# 如果命令行长这样:
# hearain@hearain:~$
# hearain@hearain:/mnt/c/Users/Windows11$
# 说明你现在在 WSL Ubuntu 里,不在容器里。

# 如果命令行长这样:
# root@xxxx:/workspace#
# 说明你现在已经在 DGL 容器里面。


############################################################
# 二、情况 1:你现在已经在容器里面
############################################################

# 先看当前容器能访问哪些目录
cd /workspace
ls

# 如果你看到 TKGR,说明这个容器挂载的是整个 TKGR 文件夹
cd /workspace/TKGR
ls

# 想进入哪个项目,就 cd 到哪个项目
# 例如进入 MLEMKD
cd /workspace/TKGR/MLEMKD

# 检查 GPU 是否正常
python -c "import torch; import dgl; print('torch:', torch.__version__); print('cuda:', torch.version.cuda); print('dgl:', dgl.__version__); print('cuda available:', torch.cuda.is_available()); print('gpu:', torch.cuda.get_device_name(0))"

# 安装依赖
pip install tqdm pandas rdflib numpy scipy scikit-learn

# 修复 Windows 换行符
sed -i 's/\r$//' ./scripts/run.sh

# 运行实验
bash ./scripts/run.sh


############################################################
# 如果你在容器里 cd /workspace 后只看到 MLEMKD
############################################################

# 说明这个容器只挂载了 MLEMKD,不能访问 TKGR 下的其他项目。
# 这时先退出容器
exit

# 然后看下面的"情况 2",重新创建一个通用容器。


############################################################
# 三、情况 2:你现在不在容器里面,而是在 WSL Ubuntu 里
############################################################

# 先进入 WSL
wsl

# 检查显卡
nvidia-smi

# 检查 Docker GPU 是否正常
docker run --rm --gpus all nvidia/cuda:12.8.0-base-ubuntu22.04 nvidia-smi

# 拉取 NVIDIA DGL 容器
docker pull nvcr.io/nvidia/dgl:25.01-py3

# 删除旧的通用容器
docker rm -f dgl_tkgr

# 创建新的通用 DGL 容器
# 注意:这里挂载的是整个 TKGR 文件夹,不是单独的 MLEMKD。
docker run --gpus all -it \
  --name dgl_tkgr \
  -v /mnt/e/ITSMR/Baselines/TKGR:/workspace/TKGR \
  nvcr.io/nvidia/dgl:25.01-py3 bash


############################################################
# 四、进入通用容器后,进入任意项目
############################################################

# 进入 TKGR 总目录
cd /workspace/TKGR

# 查看所有项目
ls

# 进入你要运行的项目
# 例如 MLEMKD
cd /workspace/TKGR/MLEMKD

# 检查 torch、DGL、GPU
python -c "import torch; import dgl; print('torch:', torch.__version__); print('cuda:', torch.version.cuda); print('dgl:', dgl.__version__); print('cuda available:', torch.cuda.is_available()); print('gpu:', torch.cuda.get_device_name(0))"

# 安装依赖
pip install tqdm pandas rdflib numpy scipy scikit-learn

# 修复 run.sh 换行符
sed -i 's/\r$//' ./scripts/run.sh

# 运行实验
bash ./scripts/run.sh


############################################################
# 五、以后已经创建好 dgl_tkgr 容器后,怎么重新进入
############################################################

# 以后不用重新 docker run,直接:
wsl

docker start -ai dgl_tkgr

# 进入容器后:
cd /workspace/TKGR
ls

# 进入你要跑的项目,例如:
cd /workspace/TKGR/MLEMKD

# 运行:
bash ./scripts/run.sh

############################
# 第一部分:Windows CMD / PowerShell 里执行
############################

# 1. 启用 WSL2,并安装 Ubuntu 22.04
wsl --set-default-version 2
wsl --install -d Ubuntu-22.04

# 如果提示需要重启电脑,就重启。
# 重启后,Ubuntu 会让你设置 Linux 用户名和密码。
# 密码输入时不显示,这是正常的。

# 2. 检查 Ubuntu 是否安装成功
wsl -l -v

# 看到 Ubuntu-22.04 后面是 VERSION 2 就可以。

# 3. 安装 Docker Desktop
winget install -e --id Docker.DockerDesktop

# 安装完成后,重启电脑。
# 重启后打开 Docker Desktop。
# 在 Docker Desktop 里确认:
# Settings → General → Use the WSL 2 based engine
# Settings → Resources → WSL Integration → 打开 Ubuntu-22.04
# 然后 Apply & Restart。


############################
# 第二部分:进入 WSL Ubuntu
############################

wsl


############################
# 第三部分:WSL Ubuntu 里执行
############################

# 1. 检查 RTX 5060 / 5060 Ti 是否能被 WSL 识别
nvidia-smi

# 2. 更新 Ubuntu 基础环境
sudo apt update
sudo apt upgrade -y
sudo apt install -y git curl wget vim

# 3. 检查 Docker 是否可用
docker --version

# 4. 测试 Docker 网络
docker pull hello-world
docker run hello-world

# 如果 docker pull 卡住或 EOF,需要在 Docker Desktop 里设置代理:
# Settings → Resources → Proxies
# HTTP Proxy:  http://127.0.0.1:你的代理端口
# HTTPS Proxy: http://127.0.0.1:你的代理端口
# 例如:
# http://127.0.0.1:7897
# 然后 Apply & Restart
# 再回到 Windows CMD 执行:
# wsl --shutdown
# 然后重新 wsl 进入 Ubuntu。

# 5. 测试 Docker 是否能调用 RTX 5060 / 5060 Ti
docker run --rm --gpus all nvidia/cuda:12.8.0-base-ubuntu22.04 nvidia-smi

# 如果这里能看到 NVIDIA GeForce RTX 5060 / 5060 Ti,说明 GPU 已经打通。

# 6. 拉取 NVIDIA DGL 容器
docker pull nvcr.io/nvidia/dgl:25.01-py3

# 如果下载中断,就重复执行:
docker pull nvcr.io/nvidia/dgl:25.01-py3

# 7. 删除旧容器,避免之前没带 GPU 权限的容器残留
docker rm -f mlemkd_dgl

# 8. 创建并进入带 GPU 权限的 DGL 容器
docker run --gpus all -it \
  --name mlemkd_dgl \
  -v /mnt/e/ITSMR/Baselines/TKGR/MLEMKD:/workspace/MLEMKD \
  nvcr.io/nvidia/dgl:25.01-py3 bash


############################
# 第四部分:进入容器后执行
# 你会看到类似 root@xxxx:/workspace#
############################

# 1. 进入项目目录
cd /workspace/MLEMKD

# 2. 检查 torch、DGL 和 GPU 是否正常
python -c "import torch; import dgl; print('torch:', torch.__version__); print('cuda:', torch.version.cuda); print('dgl:', dgl.__version__); print('cuda available:', torch.cuda.is_available()); print('gpu:', torch.cuda.get_device_name(0))"

# 正常应该看到:
# cuda available: True
# gpu: NVIDIA GeForce RTX 5060 / RTX 5060 Ti

# 3. 安装项目依赖
pip install tqdm pandas rdflib numpy scipy scikit-learn

# 4. 修复 Windows 换行符
sed -i 's/\r$//' ./scripts/run.sh

# 5. 运行实验
bash ./scripts/run.sh
复制代码
nvidia-smi
复制代码
wsl --install -d Ubuntu-22.04
wsl --set-default-version 2
wsl -l -v
wsl


WSL2 Ubuntu = Windows 里的 Linux 实验环境
Docker Desktop = 用来运行官方 DGL 容器
NVIDIA DGL 容器 = 已经配好 DGL + CUDA + PyTorch 的环境
RTX 5060 = 最后被容器调用来跑 GPU

相关推荐
枕星而眠2 小时前
C++ 面向对象核心机制深度解析:多态性、虚函数、虚继承与 final 类
运维·开发语言·c++·后端
着迷不白2 小时前
八、shell脚本
linux·运维
tobias.b2 小时前
JumpServer4\.10\.16离线部署\+外部Nginx反向代理 解决30分钟空闲断开WebSocket超时(延长10天)
运维·websocket·nginx
爱装代码的小瓶子2 小时前
3. 设计buffer模块
linux·服务器·开发语言·c++·php
流浪0012 小时前
Linux系统篇(四):一文吃透 Linux 虚拟地址空间:从页表映射到内核结构体全链路拆解
linux·运维·服务器
Jacob程序员2 小时前
WebSSH技术实现全解析
linux·运维·服务器·websocket
暗冰ཏོ2 小时前
运维岗位完整学习指南:从 Linux 基础到 DevOps / SRE 实战
linux·运维·服务器·ubuntu·运维开发·devops
龙泉寺天下行走2 小时前
bash (())奇怪的返回码
linux·运维·服务器
Fcy6482 小时前
Linux下 进程间通信详解(二)System V IPC
linux·运维·消息队列·共享内存·信号量·system v