在OS X上更改Docker的存储驱动程序

时间:2016-09-12 17:36:02

标签: macos docker osx-elcapitan

这基本上是后续的to this question,但是现在因为OS X Docker不再需要Docker Toolbox(即不再需要VirtualBox),我完全失去了如何从AUFS切换到devicemapper或其他。

我在这里面临的问题是AUFS the missing hardlink support,这会在Android SDK的安装过程中出现问题,所以我希望devicemapper能帮助我。

那么,如何在OS X中更改Docker本机实现的存储驱动程序?

2 个答案:

答案 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 psdocker images消失。我不得不再次重置git存储库并重新启动Docker以使我的配置更改返回,然后所有数据都返回。

答案 1 :(得分:9)

Matt是正确的,默认的Docker-for-Mac内核不支持devicemapper,但一般来说,有更好的方法来更改守护进程选项:

启动Docker for Mac。 单击菜单栏中的鲸鱼,然后单击首选项

the docker whale menu, with the preferences option highlighted

点击the Daemon icon in Docker for Mac Preferences

单击“高级”并提供JSON以自定义守护程序设置。

The Docker Preferences Dialog under Daemon/Advanced

然后点击Apply&amp;重启,并检查更改:

$ docker info | grep Stor
Storage Driver: overlay2