# 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








