每次你执行 docker run 命令,Docker 都会根据镜像创建一个“全新的、独立的容器实例”。
这就像是你有一张光盘(镜像),每执行一次 run,就相当于把这张光盘安装到了一台新的虚拟机(容器)里。
为什么会出现多个?
- 没有指定名称:如果你在
docker run时没有加上--name参数,Docker 会随机给容器起名字(比如elated_hopper或trusting_curie)。 - 重复执行命令:你可能在调试环境或解决空间问题时,多次输入了
docker run...。 - 容器没自动删除:默认情况下,容器停止后并不会消失,而是处于
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 了。
- 启动它:
docker start my_rocm_work - 进入它:
- 在 VS Code 的 Docker 插件里,你会看到唯一的
my_rocm_work。 - 右键点击它选择 Start(如果没运行),然后 Attach Visual Studio Code。
- 在 VS Code 的 Docker 插件里,你会看到唯一的
如果你再次执行相同的 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 = 进入正在运行的容器(相当于连上远程桌面)。