每次你执行 docker run 命令,Docker 都会根据镜像创建一个“全新的、独立的容器实例”。

这就像是你有一张光盘(镜像),每执行一次 run,就相当于把这张光盘安装到了一台新的虚拟机(容器)里。

为什么会出现多个?

  1. 没有指定名称:如果你在 docker run 时没有加上 --name 参数,Docker 会随机给容器起名字(比如 elated_hoppertrusting_curie)。
  2. 重复执行命令:你可能在调试环境或解决空间问题时,多次输入了 docker run...
  3. 容器没自动删除:默认情况下,容器停止后并不会消失,而是处于 Exited(退出)状态,依然占用着磁盘空间(虽然不多)和列表位置。

如何清理并规范管理?

为了让环境不乱,建议按照以下步骤操作:

1. 查看所有容器(包括运行中和已停止的)

在终端输入:

docker ps -a

你会看到一个列表,里面有三行 rocm/pytorch。请查看 STATUS 列,看哪些是 Up(运行中),哪些是 Exited(已退出)。

2. 删除不需要的容器

如果你想把那三个都删了重新开始:

# 停止正在运行的容器(如果有)
docker stop <容器ID或名称>

# 删除容器
docker rm <容器ID或名称>

# 或者一键清理所有已经停止的容器(非常有用):
docker container prune

建议:以后这样使用 Docker(专业做法)

为了避免每次都产生新容器,建议采用 “一次创建,多次启动” 的模式:

第一步:创建一个带名字的容器(仅需执行一次)

docker run -it \
  --device=/dev/kfd --device=/dev/dri --group-add video --ipc=host --shm-size 8G \
  -v /data/my_project:/workspace \
  --name my_rocm_work \
  rocm/pytorch:rocm7.2_ubuntu24.04_py3.12_pytorch_release_2.9.1 \
  bash

注意:加上了 --name my_rocm_work

第二步:以后如何再次进入?

如果你关掉了电脑或者 VS Code,不要再用 docker run

  1. 启动它
    docker start my_rocm_work
    
  2. 进入它
    • 在 VS Code 的 Docker 插件里,你会看到唯一的 my_rocm_work
    • 右键点击它选择 Start(如果没运行),然后 Attach Visual Studio Code

如果你再次执行相同的 docker run --name my_rocm_work ... 命令,Docker 会报错提示:
Error response from daemon: Conflict. The container name "/my_rocm_work" is already in use...
这其实是一个很好的提醒,告诉你“环境已经在那了,直接进去就行”。

总结

  • docker run = 创建并运行一个新的容器(相当于重装系统)。
  • docker start = 启动一个已经存在的容器(相当于开机)。
  • VS Code Attach = 进入正在运行的容器(相当于连上远程桌面)。