devicemapper
驱动,但可以运行overlay2
驱动。Docker for Mac没有UI来管理此配置,但已更新为包含“Daemon”部分,您可以在其中编辑docker.json
配置文件。转到Docker图标 > “Preferences” > “Daemon” > “Advanced”,将storage-driver
设置为overlay2
。{ "storage-driver": "overlay2" }
请参考kojiros的答案,了解完整的步骤细节。
您可以在Mac上的~/Library/Containers/com.docker.docker/Data/database
中修改Docker配置文件。点击此处了解更多详情。
该目录是一个Git仓库,通常为空白:
$ cd ~/Library/Containers/com.docker.docker/Data/database
$ ls -al
total 0
drwxr-xr-x 4 user staff 136 28 Sep 02:46 .
drwxr-xr-x 20 user staff 680 28 Sep 02:54 ..
drwxr-xr-x 11 user staff 374 28 Sep 02:58 .git
然而git数据库中有文件
$ git status
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: com.docker.driver.amd64-linux/etc/docker/daemon.json
deleted: com.docker.driver.amd64-linux/etc/hostname
deleted: com.docker.driver.amd64-linux/etc/sysctl.conf
....
$ git reset --hard HEAD
overlay2
存储驱动程序添加进去。$ vi com.docker.driver.amd64-linux/etc/docker/daemon.json
/var/lib/docker
大部分内容,然后才能使用新的存储驱动程序。这将删除您所有的容器、镜像和卷!请先备份任何需要的内容。screen
连接到虚拟机的tty(如果没有,请安装brew install screen
)。$ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
使用 root
登录,无需密码
moby:~# /etc/init.d/docker stop
moby:~# rm -rf /var/lib/docker/*
$ git commit -m overlay com.docker.driver.amd64-linux/etc/docker/daemon.json
提交更改后,Docker会自动拾取更改并重新启动虚拟机。
您现在运行的是Docker for Mac VM,并使用overlay2
存储驱动程序。如果这无法解决您的问题,通过一些工作,您可能可以弄清楚如何在VM中使devicemapper
支持正常工作。一旦您弄清楚了步骤,所有步骤都是相同的。
注意 Docker for Mac的升级可能会导致一些奇怪的情况。上次升级后,我的所有容器/镜像都从docker ps
或docker images
中消失了。我不得不再次重置git存储库并重新启动Docker,以使我的配置更改生效,然后所有数据都回来了。
docker rm $(docker ps -a -q)
和 docker rmi -f $(docker images -a -q)
。 - Sergio
overlay2
,因此不再接受该设置 :) - Dima Tisnek