Изменить драйвер хранилища для Docker на OS X

По сути, это продолжение этого вопроса, но теперь, так как OS X Docker больше не нуждается в Docker Toolbox (т.е. больше не нуждается в VirtualBox), я совершенно потерял, как переключаться с AUFS в devicemapper или что-то другое.

Проблема, с которой я здесь сталкиваюсь, это отсутствие поддержки жестких ссылок в AUFS что делает проблемы при установке Android SDK, так что я надеюсь devicemapper поможет мне здесь.

Итак, как я могу изменить драйвер хранилища собственной реализации Docker в OS X?

4 ответа

Решение

Виртуальная машина Alpine Linux, которую запускает Docker для Mac, не поддерживает devicemapper водитель, но он может запустить overlay2 Водитель.

Пользовательский интерфейс для управления этой конфигурацией пока отсутствует. Пользовательский интерфейс Docker для Mac был обновлен и теперь содержит раздел "Daemon", в котором можно редактировать docker.json Конфигурационный файл

Перейдите к значку Docker> "Настройки" > "Демон" > "Дополнительно" и установите storage-driver в overlay2

{ "storage-driver": "overlay2" }

Смотрите коджирос ответ для более подробной информации шаг за шагом.

Редактирование настроек вручную

Вы можете изменить конфигурационные файлы Docker на вашем Mac в ~/Library/Containers/com.docker.docker/Data/database,

Этот каталог является 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 драйвер хранилища.

$ vi com.docker.driver.amd64-linux/etc/docker/daemon.json

Докеру на ВМ понадобится большая часть /var/lib/docker удалены, прежде чем вы сможете начать с новым драйвером хранилища. Это удалит все ваши контейнеры, изображения и объемы! Сделайте резервные копии всего, что вам нужно заранее.

Присоединить к виртуальной машине с помощью screen (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

Выйдите из сеанса экрана с помощью Ctrl - a затем d

Теперь вы можете зафиксировать свои изменения обратно на Mac

$ git commit -m overlay com.docker.driver.amd64-linux/etc/docker/daemon.json

Изменения будут автоматически приняты Docker при фиксации, и виртуальная машина будет перезапущена.

Теперь у вас есть Docker для Mac VM, работающий с overlay2 драйвер хранилища. Если это не решит ваши проблемы, с некоторой работой вы, вероятно, могли бы выяснить, как получить devicemapper поддержка работы в ВМ тоже. Шаги, как только вы поняли это, все одинаковы.

Примечание. Обновление до Docker для Mac может вызвать некоторые странности. Последнее обновление все мои контейнеры / изображения исчезли из docker ps или же docker images, Мне пришлось снова сбросить git-репозиторий и перезапустить Docker, чтобы мои изменения конфигурации вернулись, а затем все данные вернулись.

Мэтт прав, что стандартное ядро ​​Docker-для-Mac не поддерживает devicemapper, но в целом есть лучший способ изменить параметры демона:

Запустите Docker для Mac. Нажмите на кита в строке меню, затем нажмите Настройки

меню док-кита с выделенной опцией настроек

Нажмите значок Daemon в настройках Docker для Mac

Нажмите "Дополнительно" и укажите JSON для настройки параметров демона.

Диалоговое окно настроек Docker под Daemon / Advanced

Затем нажмите "Применить и перезагрузить" и проверьте изменения:

$ docker info | grep Stor
Storage Driver: overlay2

Даже при использовании docker-for-mac у вас все еще есть виртуализация под OSX с использованием hyperkit / xhyve, поскольку ядро ​​Darwin по-прежнему не запускает docker "изначально". Таким образом, вы не можете выбрать драйвер хранилища, как вы предполагаете. Также прочитайте последний пункт бюллетеня здесь https://docs.docker.com/docker-for-mac/docker-toolbox/

Во время установки Docker для Mac предоставляет виртуальную машину HyperKit на базе Alpine Linux, на которой работает Docker Engine. Он предоставляет Docker API для сокета в /var/tmp/docker.sock

В Docker-для-Mac OSXFS используется для предоставления доступа к локальным папкам OSX в xhyve slim vm поэтому ядро ​​linux /os(alpine) подхватывает их при запуске контейнеров и связывает любые тома с файловой системой vms, которая затем синхронизируется.

AFAIK Нет способа выбрать драйвер хранилища в Docker-Mac-Mac, поскольку это невозможно из-за того, как OSXFS синхронизирует данные с хоста в alpine-vm, который затем предлагает это контейнерам.

Со временем это изменилось, и предыдущие ответы больше не являются правильными. 12 марта 2022 г. https://docs.docker.com/storage/storagedriver/select-storage-driver/ «Изменение драйвера хранилища не поддерживается в Docker Desktop для Mac»

Другие вопросы по тегам