Tho*_*ler 8 macos docker osx-elcapitan
这基本上是这个问题的后续,但现在因为OS X Docker不再需要Docker Toolbox(即不再需要VirtualBox),我完全失去了如何切换AUFS到devicemapper或其他东西.
我在这里遇到的问题是缺少硬链接支持,AUFS在安装Android SDK期间会出现问题,所以我希望devicemapper能在这里帮助我.
那么,如何在OS X中更改Docker本机实现的存储驱动程序?
Mat*_*att 14
Docker for Mac运行的Alpine Linux VM不支持devicemapper驱动程序,但它可以运行overlay2驱动程序.
目前还没有用于管理此配置的UI.Docker for Mac UI已更新为包含"守护程序"部分,您可以在其中编辑docker.json配置文件.
进入Docker图标>"首选项">"守护程序">"高级"并设置storage-driver为overlay2
{ "storage-driver": "overlay2" }
Run Code Online (Sandbox Code Playgroud)
有关完整的分步详细信息,请参阅kojiros答案.
您可以修改 Mac上的Docker配置文件~/Library/Containers/com.docker.docker/Data/database.
这个目录是一个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
Run Code Online (Sandbox Code Playgroud)
但是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
....
Run Code Online (Sandbox Code Playgroud)
要从git检索以前的内容,请运行:
$ git reset --hard HEAD
Run Code Online (Sandbox Code Playgroud)
编辑现在存在的docker守护程序配置文件,以包含overlay2存储驱动程序.
$ vi com.docker.driver.amd64-linux/etc/docker/daemon.json
Run Code Online (Sandbox Code Playgroud)
在/var/lib/docker开始使用新的存储驱动程序之前,VM上的Docker将需要大部分删除.这将删除所有容器,图像和卷!事先备份您需要的任何东西.
附上VM的tty screen(brew install screen如果你没有)
$ screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
Run Code Online (Sandbox Code Playgroud)
登录root,没有密码
moby:~# /etc/init.d/docker stop
moby:~# rm -rf /var/lib/docker/*
Run Code Online (Sandbox Code Playgroud)
退出提示ctrl-d
用ctrl- a然后退出屏幕会话d
现在,您可以在Mac上提交更改
$ git commit -m overlay com.docker.driver.amd64-linux/etc/docker/daemon.json
Run Code Online (Sandbox Code Playgroud)
Docker在提交时将自动获取更改,VM将重新启动.
您现在有一个使用overlay2存储驱动程序运行的Docker for Mac VM .如果这不能解决您的问题,通过一些工作,您可能会弄清楚如何devicemapper在VM中获得支持.一旦你想出来的步骤都是一样的.
注意升级到Docker for Mac可能会导致一些奇怪之处.上次升级我的所有容器/图像都从a docker ps或docker images.我不得不再次重置git存储库并重新启动Docker以使我的配置更改返回,然后所有数据都返回.
koj*_*iro 10
Matt是正确的,默认的Docker-for-Mac内核不支持devicemapper,但一般来说,有一种更好的方法来更改守护进程选项:
启动Docker for Mac.单击菜单栏中的鲸鱼,然后单击"首选项"
单击"高级"并提供JSON以自定义守护程序设置.
然后单击Apply&Restart,并检查更改:
$ docker info | grep Stor
Storage Driver: overlay2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6900 次 |
| 最近记录: |