今天,我在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
被弃用之类的信息,那么在升级之前我应该怎么做?是否有一般建议/最佳实践来避免此类问题?
答案 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 ...