这基本上是后续的to this question,但是现在因为OS X Docker不再需要Docker Toolbox(即不再需要VirtualBox),我完全失去了如何从AUFS
切换到devicemapper
或其他。
我在这里面临的问题是AUFS
the missing hardlink support,这会在Android SDK的安装过程中出现问题,所以我希望devicemapper
能帮助我。
那么,如何在OS X中更改Docker本机实现的存储驱动程序?
答案 0 :(得分:14)
Docker for Mac运行的Alpine Linux VM不支持devicemapper
驱动程序,但它可以运行overlay2
驱动程序。
还没有用于管理此配置的UI Docker for Mac UI已更新为包含"守护程序"您可以编辑docker.json
配置文件的部分。
获得Docker图标> "设定" > "守护进程" > "高级"并将storage-driver
设置为overlay2
{ "storage-driver": "overlay2" }
有关完整的分步详细信息,请参阅kojiros答案。
~/Library/Containers/com.docker.docker/Data/database
中您的Mac上的can modify the Docker config个文件。
这个目录是一个git repo,它通常是空白的:
$ 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检索以前的内容,请运行:
$ git reset --hard HEAD
编辑现在存在的docker守护程序配置文件,以包含overlay2
存储驱动程序。
$ vi com.docker.driver.amd64-linux/etc/docker/daemon.json
在启动新的存储驱动程序之前,VM上的Docker将需要删除大部分/var/lib/docker
。这将删除所有容器,图像和卷!事先备份您需要的任何东西。
使用screen
(如果您没有brew install screen
附加到VM的tty)
$ 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/*
使用 ctrl 退出提示 - d
使用 ctrl - a 然后 d 退出屏幕会话
现在,您可以在Mac上提交更改
$ git commit -m overlay com.docker.driver.amd64-linux/etc/docker/daemon.json
Docker会在提交时自动获取更改,VM将重新启动。
您现在有一个使用overlay2
存储驱动程序运行的Docker for Mac VM。如果这不能解决您的问题,那么通过一些工作您可能会弄清楚如何在VM中获得devicemapper
支持。一旦你发现它们的步骤都是一样的。
注意升级到Docker for Mac可能会导致一些奇怪之处。上次升级我的所有容器/图片都从docker ps
或docker images
消失。我不得不再次重置git存储库并重新启动Docker以使我的配置更改返回,然后所有数据都返回。
答案 1 :(得分:9)