You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过Snap安装Dive后Docker镜像/容器不显示的问题求助

解决Snap安装Dive后Docker根目录偏移的问题

问题背景

在Ubuntu 22.04.1 LTS上通过Snap安装Dive工具后,出现以下异常:

  • 执行docker images、docker container ls命令无任何返回结果,但原有镜像和容器的文件仍存在于/var/lib/docker目录中
  • 重启Docker守护进程后问题依旧,排查发现docker info显示Docker根目录被修改为/var/snap/docker/common/var-lib-docker

解决方法

方法1:通过Docker daemon配置指定原根目录

  1. 编辑Docker守护进程配置文件(不存在则创建):
    sudo nano /etc/docker/daemon.json
    
  2. 添加或修改data-root字段,指向原来的Docker数据目录:
    {
      "data-root": "/var/lib/docker"
    }
    
  3. 保存文件后,重启Docker服务:
    sudo systemctl restart docker
    
  4. 验证配置是否生效:
    docker info | grep "Docker Root Dir"
    
    正常情况下会输出Docker Root Dir: /var/lib/docker,此时再执行docker images就能看到原有镜像了

方法2:适配Snap版Docker的环境(若Docker本身是Snap安装)

如果你的Docker是通过Snap安装的,Snap的隔离机制会导致它默认使用自己的目录,可通过以下方式处理:

  1. 先停止Snap版Docker服务:
    sudo snap stop docker
    
  2. 要么创建软链接让Snap Docker指向原数据目录:
    sudo ln -s /var/lib/docker /var/snap/docker/common/var-lib-docker
    
    要么迁移原数据到Snap指定的目录(适合不想修改配置的场景):
    sudo rsync -av /var/lib/docker/ /var/snap/docker/common/var-lib-docker/
    
  3. 重新启动Snap版Docker:
    sudo snap start docker
    
  4. 执行docker images验证是否能识别原有镜像和容器

注意事项

  • 修改daemon.json时要保证JSON格式正确,比如引号、逗号都不能错,否则Docker可能启动失败
  • 迁移数据前建议备份/var/lib/docker目录,避免数据丢失
  • 若后续不需要Snap版Dive,卸载后改用Deb包安装Dive,能减少这类环境冲突问题

内容的提问来源于stack exchange,提问作者Alexander Argyriou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 20:22:35