1. 背景

在系统ubuntu24.04使用apt下载了docker,并启动了容器。当时是可以docker ps找到容器的,但是重启以后就没有了。但是能看到容器的服务器确实还是在运行的,但是无法使用docker ps找到了。网上查了一下,云因镜像自带了一个使用 snap 安装的 docker , 再次使用 apt 下载了 docker , 默认的 docker 命令变为 apt 下载的, 此时, 运行与查看镜像都没有问题,后来服务器重启过之后, docker 命令变为 snap 下载的了, 这时使用 docker ps 无法找到 aptdocker 启动的镜像。

2. 排查

使用snap list查看是否有docker,如下说明有snap的docker。

1
2
mh@mh-MINI-PRO-AHP:~$ snap list | grep docker
docker 27.5.1 3064 latest/stable canonical** -

使用 apt list --installed | grep 'docker' 命令 查看是否有 docker,如下则是有:

1
2
mh@mh-MINI-PRO-AHP:~$ docker info |grep "Docker Root Dir"
Docker Root Dir: /var/snap/docker/common/var-lib-docker

如果2个都有,则说明安装了2个docker,存在冲突。

3. 解决方案

使用命令 docker info |grep "Docker Root Dir"查看,如果是:

1
2
mh@mh-MINI-PRO-AHP:~$ docker info |grep "Docker Root Dir"
Docker Root Dir: /var/snap/docker/common/var-lib-docker

则说明当前的dockersnap的,但是实际自启动运行的是apt的,所以无法显示,应该删除snap
如果是:

1
2
mh@mh-MINI-PRO-AHP:~$ docker info |grep "Docker Root Dir"
Docker Root Dir: /var/lib/docker

则说明当前的dockerapt的,但是实际自启动运行的是snap的,所以要卸载apt

1
2
3
4
# 卸载apt的
apt autoremove docker
# 卸载snap的
snap remove docker

卸载完毕后,记得重新加载docker

1
2
3
4
5
# 重新启动docker
sudo systemctl restart docker

# 重启设备
reboot