Docker新手求助:如何重新启动并复用已退出的容器?
解决Docker容器重启与修改保留问题
嘿,咱们来理清你遇到的问题,一步步解决它!
你当前操作的核心错误
你现在用的docker run -it 1d1a162a72a6 /bin/bash命令,本质是基于指定镜像创建并启动一个全新的容器实例。每次执行这个命令,Docker都会从镜像1d1a162a72a6生成一个干净的新容器——这个容器和你之前修改过的旧容器完全是两个独立的实例,所以之前安装的vim、编辑的Python程序自然看不到。这是对docker run命令的典型误解哦。
如何重启并连接到之前修改过的已退出容器
按照以下步骤操作,就能找回你之前修改的容器:
- 定位目标容器:
用你已经在使用的docker ps -a命令列出所有容器,找到你之前修改过的那个容器(比如你提到的ID为25bfc74fab3b、名字为festive_einstein的容器),确认它的STATUS列显示为Exited状态。 - 重启容器:
执行docker start命令启动这个已退出的容器,你可以用容器ID或者名字(名字更好记):
这个命令会把处于停止状态的容器重新启动起来。docker start 25bfc74fab3b # 或者用名字更直观 docker start festive_einstein - 进入容器交互终端:
容器启动后,用docker exec命令连接到它的终端:
这样进去之后,你之前安装的vim、编辑的程序都会原封不动地保留着。docker exec -it 25bfc74fab3b /bin/bash # 同样可以用容器名 docker exec -it festive_einstein /bin/bash
后续最佳实践:让修改永久生效
如果你希望后续创建的容器都能直接继承这些修改,不用每次都找旧容器,可以把修改后的容器提交为一个新的自定义镜像:
docker commit <容器ID> my-custom-hadoop:v1
之后你就可以用这个新镜像来创建容器,每次生成的容器都会自带你之前的所有修改:
docker run -it my-custom-hadoop:v1 /bin/bash
内容的提问来源于stack exchange,提问作者deweloper clr




