Docker容器无故丢失无法查询,如何恢复访问原有容器?
容器是否丢失的第一步排查
docker container ls默认仅展示运行状态的容器,先执行以下命令查看所有状态的容器:
docker container ls -a
如果该命令能输出你之前创建的容器,直接执行docker start <容器ID或容器名称>即可启动原有容器,Docker dashboard也会同步显示。
如果
docker container ls -a无任何输出的处理方案 这种情况基本是Docker Desktop的存储上下文或数据磁盘位置发生了变动,按以下步骤排查:
- 检查Docker上下文切换
执行docker context ls查看当前激活的上下文,若当前使用的不是默认的default上下文,执行docker context use default切回原有上下文,再重新列出容器查看。 - 核对Docker数据磁盘位置
Docker Desktop的容器、镜像、卷数据都存在统一的虚拟磁盘文件中,更新、重置操作很可能会修改磁盘的默认读取路径:- Windows系统默认路径为
C:\ProgramData\Docker\,虚拟磁盘文件为Docker.vhdx - macOS系统默认路径为
~/Library/Containers/com.docker.docker/Data/vms/0/data/,虚拟磁盘文件为Docker.raw
你可以到对应路径下查看是否存在带old、backup后缀的旧磁盘备份文件,或你之前手动修改过的磁盘文件,打开Docker Desktop设置,进入「Resources -> Advanced -> Disk image location」,指定路径为旧磁盘文件的位置后重启Docker即可。
- Windows系统默认路径为
注意:你执行的factory reset操作默认会清除当前配置的磁盘内的所有数据,但若升级过程触发过自动磁盘备份,旧数据不会被删除。
数据找回方案
如果确认原有磁盘文件已经被清理,容器本身无法恢复,可通过以下方式找回业务数据:
- 执行
docker volume ls查看本地存储卷,若你之前的容器挂载了本地卷,卷内的数据不会随容器消失,重新创建同配置的容器挂载对应卷即可恢复数据 - 执行
docker images查看本地镜像,若你之前把容器提交为过镜像,直接用原有镜像重新启动容器即可恢复容器配置
内容的提问来源于stack exchange,提问作者user15807010
相关产品推荐
相关产品推荐

