在 OS X 上更改 Docker 的存储驱动程序
Change storage driver for Docker on OS X
这基本上是一个后续to this question,但现在由于OS X Docker不再需要Docker工具箱(即不再需要VirtualBox),我完全不知道如何从 AUFS
切换到 devicemapper
或其他东西。
我在这里也面临的问题是 AUFS
中的 the missing hardlink support,它在安装 Android SDK 时出现问题,所以我希望 devicemapper
会帮帮我。
那么,如何更改 Docker 在 OS X 中的本机实现的存储驱动程序?
Mac 运行 的 Docker 的 Alpine Linux VM 不支持 devicemapper
driver 但它可以 运行 overlay2
driver。
尚无 UI 用于管理此配置 Mac UI 的 Docker 已更新为包含一个"Daemon" 部分,您可以在其中编辑 docker.json
配置文件。
找到 Docker 图标 > "Preferences" > "Daemon" > "Advanced" 并将 storage-driver
设置为 overlay2
{ "storage-driver": "overlay2" }
有关完整的分步详细信息,请参阅 kojiros 答案。
手动配置编辑
您在 ~/Library/Containers/com.docker.docker/Data/database
中 mac 上的 can modify the Docker config 个文件。
这个目录是一个 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 检索以前的内容,运行:
$ git reset --hard HEAD
编辑现在存在的 docker 守护程序配置文件,以包含 overlay2
存储 driver。
$ vi com.docker.driver.amd64-linux/etc/docker/daemon.json
VM 上的 Docker 需要删除大部分 /var/lib/docker
,然后才能开始使用新存储 driver。这将删除 您所有的容器、图像和卷!事先备份您需要的任何内容。
使用 screen
附加到 VM 的 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/*
使用ctrl-d
退出提示
退出屏幕 session 使用 ctrl-a 然后 d
现在您可以在 mac
上提交更改
$ git commit -m overlay com.docker.driver.amd64-linux/etc/docker/daemon.json
更改将在提交时由 Docker 自动获取,VM 将重新启动。
您现在有一个 Docker 用于 Mac VM 运行 overlay2
存储 driver。如果这不能解决您的问题,通过一些工作您可能会弄清楚如何在 VM 中也获得 devicemapper
支持。一旦你弄明白了,步骤都是一样的。
注意 Mac 升级到 Docker 可能会导致一些奇怪的情况。上次升级时,我所有的 containers/images 从 docker ps
或 docker images
中消失了。我不得不再次重置 git 存储库并重新启动 Docker 以使我的配置更改返回,然后所有数据都返回。
Matt 是正确的,默认 Docker-for-Mac 内核不支持 devicemapper,但总的来说,有一个更好的方法来更改守护进程选项:
开始 Docker Mac。
单击菜单栏中的鲸鱼,然后单击首选项
点击
单击“高级”并提供 JSON 以自定义您的守护程序设置。
然后单击“应用并重新启动”,并检查更改:
$ docker info | grep Stor
Storage Driver: overlay2
这已经随着时间的推移而改变,前面的答案不再正确。
2022-03-12
https://docs.docker.com/storage/storagedriver/select-storage-driver/
“Mac 的 Docker 桌面不支持修改 storage-driver”
这基本上是一个后续to this question,但现在由于OS X Docker不再需要Docker工具箱(即不再需要VirtualBox),我完全不知道如何从 AUFS
切换到 devicemapper
或其他东西。
我在这里也面临的问题是 AUFS
中的 the missing hardlink support,它在安装 Android SDK 时出现问题,所以我希望 devicemapper
会帮帮我。
那么,如何更改 Docker 在 OS X 中的本机实现的存储驱动程序?
Mac 运行 的 Docker 的 Alpine Linux VM 不支持 devicemapper
driver 但它可以 运行 overlay2
driver。
尚无 UI 用于管理此配置 Mac UI 的 Docker 已更新为包含一个"Daemon" 部分,您可以在其中编辑 docker.json
配置文件。
找到 Docker 图标 > "Preferences" > "Daemon" > "Advanced" 并将 storage-driver
设置为 overlay2
{ "storage-driver": "overlay2" }
有关完整的分步详细信息,请参阅 kojiros 答案。
手动配置编辑
您在 ~/Library/Containers/com.docker.docker/Data/database
中 mac 上的 can modify the Docker config 个文件。
这个目录是一个 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 检索以前的内容,运行:
$ git reset --hard HEAD
编辑现在存在的 docker 守护程序配置文件,以包含 overlay2
存储 driver。
$ vi com.docker.driver.amd64-linux/etc/docker/daemon.json
VM 上的 Docker 需要删除大部分 /var/lib/docker
,然后才能开始使用新存储 driver。这将删除 您所有的容器、图像和卷!事先备份您需要的任何内容。
使用 screen
附加到 VM 的 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/*
使用ctrl-d
退出提示退出屏幕 session 使用 ctrl-a 然后 d
现在您可以在 mac
上提交更改$ git commit -m overlay com.docker.driver.amd64-linux/etc/docker/daemon.json
更改将在提交时由 Docker 自动获取,VM 将重新启动。
您现在有一个 Docker 用于 Mac VM 运行 overlay2
存储 driver。如果这不能解决您的问题,通过一些工作您可能会弄清楚如何在 VM 中也获得 devicemapper
支持。一旦你弄明白了,步骤都是一样的。
注意 Mac 升级到 Docker 可能会导致一些奇怪的情况。上次升级时,我所有的 containers/images 从 docker ps
或 docker images
中消失了。我不得不再次重置 git 存储库并重新启动 Docker 以使我的配置更改返回,然后所有数据都返回。
Matt 是正确的,默认 Docker-for-Mac 内核不支持 devicemapper,但总的来说,有一个更好的方法来更改守护进程选项:
开始 Docker Mac。 单击菜单栏中的鲸鱼,然后单击首选项
点击
单击“高级”并提供 JSON 以自定义您的守护程序设置。
然后单击“应用并重新启动”,并检查更改:
$ docker info | grep Stor
Storage Driver: overlay2
这已经随着时间的推移而改变,前面的答案不再正确。 2022-03-12 https://docs.docker.com/storage/storagedriver/select-storage-driver/ “Mac 的 Docker 桌面不支持修改 storage-driver”