背景原理:
Ubuntu系统,docker是用apt安装的,安装dive时apt没有包,选择使用snap安装,但snap会重新安装docker环境,覆盖旧的docker环境,导致看不到旧环境下的镜像和容器


1.先校验旧环境下的资源是否还在
docker info | grep "Docker Root Dir"
ls /var/lib/docker/image/overlay2/imagedb/content/sha256/ | head

注:可以看到镜像和容器都还在,只是系统默认的docker环境变了,导致命令查不到
2.停止并卸载现有的docker环境
systemctl stop docker.service
systemctl stop docker.socket
snap remove docker

3. 修改系统默认的docker环境
vim /lib/systemd/system/docker.service
# 找到 ExecStart ,改为
ExecStart=/usr/bin/dockerd --data-root /var/lib/docker -H fd:// --containerd=/run/containerd/containerd.sock

注:关键是加上 --data-root /var/lib/docker 这个参数
4.重新加载并启动docker
systemctl daemon-reload
systemctl start docker.socket
systemctl start docker.service

注:可以看到重新可以查到旧环境的docker镜像
5. 强烈建议
# 卸载现有的dive,去GitHub下载
snap remove dive --purge
注:
- GitHub下载dive地址:https://github.com/wagoodman/dive/releases/tag/v0.13.1
- dive和docker保持同一个安装方式,如果docker是用snap下载的,dive也使用snap下载,如果docker是使用apt下载的,dive通过github下载