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/dockersnap list docker检查, 没有输出即为删除成功, sudo systemctl restart docker.service 重启后, 执行docker ps和docker images检查, 可以看到输出.