升级到Docker 18.09之后。由于devicemapper错误,所有容器均无效

时间:2018-11-12 14:18:13

标签: docker debian debian-stretch docker-ce

今天,我在Debian Stretch Host中将docker从18.06升级到18.09。升级后,我们所有的图像和容器都“消失”了,即docker <command>将不再显示它们,但/var/lib/docker中的数据并没有消失。 dockerd -D揭幕:

Cannot load container XXX because it was created with another graph driver

所以我要做的第一件事是将docker降级到最新版本,以检查是否可以解决该问题。它的工作原理。之前工作的systemd单元文件无法启动docker服务。原来我必须现在将-s devicemapper明确地传递给dockerd,但我不知道为什么,因为显然升级到18.09确实使我刚拥有的/var/lib/docker/overlay2删除以像以前一样启动18.06。

因此,在我确认上一个docker版本已解决此问题之后,我再次升级到18.09,并尝试通过传递-s devicemapper来显式地解决此问题。但是,在18.09中,守护进程甚至根本无法启动,并发出抱怨:

Failed to GetDriver graph                     driver=devicemapper error="graphdriver plugins are only supported with experimental mode" home-dir=/var/lib/docker

我找不到关于devicemapper被弃用之类的信息,那么在升级之前我应该​​怎么做?是否有一般建议/最佳实践来避免此类问题?

1 个答案:

答案 0 :(得分:1)

以防万一。我必须核对通过薄荷安装的更新渠道获得的18.09版本:

sudo apt-get autoremove docker-ce 
sudo rm -rf /etc/docker 
sudo rm -rf /var/lib/docker
sudo apt-get autoremove --purge docker-ce

然后重新安装,然后重新进行有效的18.09 docker安装:

sudo apt-get install docker-ce

此操作将我的存储驱动程序移至Storage Driver: overlay2之前的版本,devicemapper似乎是问题的根源。

毫无疑问,可以通过/etc/docker/daemon.json设置来解决此问题,但是我没有时间弄清楚不幸的是什么。

很显然,如果您对/var/lib/docker进行核对,则会丢失所有本地Docker映像,因此请确保在剪切粘贴之前执行此操作。

是的,原始问题可能应该已经发布到SU而不是SO ...