目录

目录

Ubuntu的Docker容器和镜像消失

目录

一次ubuntu Linux机器内存溢出强行重启机器, 启动后docker的容器和镜像全部消失, 后台还有容器相关进程在运行, apt重装docker, 容器和镜像全部都能看到了, 然后在某次正常重启后, 又消失了, 网上查询了很多方式, 都不行, 最后发现是因为snap安装的docker和apt安装的docker共存导致的.

docker info可以看到:

Client:
 Version:    24.0.7
 Context:    default
 Debug Mode: false

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 24.0.5
 Storage Driver: overlay2
  Backing Filesystem: btrfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 3dce8eb055cbb6872793272b4f20ed16117344f8
 runc version:
 init version: de40ad0
 Security Options:
  apparmor
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 6.8.0-41-generic
 Operating System: Ubuntu Core 22
 OSType: linux
 Architecture: x86_64
 CPUs: 8
 Total Memory: 7.524GiB
 Name: alpha01
 ID: 2595f729-554d-43f0-ad76-6d9578678fc9
 Docker Root Dir: /var/snap/docker/common/var-lib-docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

可以看到Docker Root Dir: /var/snap/docker/common/var-lib-docker, 表示现在docker cli连接的是snap的docker, 而不是apt安装的docker, 所以容器和镜像都是空的, 可能是内存溢出发生了一些错误, 导致/var/run/docker.sock指向了snap的docker, snap list docker查看, 确实有docker服务在运行

执行命令:

sudo snap stop docker
sudo snap remove docker
sudo rm -rf /var/snap/docker

snap list docker检查, 没有输出即为删除成功, sudo systemctl restart docker.service 重启后, 执行docker psdocker images检查, 可以看到输出.