Изменить драйвер хранилища для 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. Нажмите на кита в строке меню, затем нажмите Настройки
Нажмите "Дополнительно" и укажите JSON для настройки параметров демона.
Затем нажмите "Применить и перезагрузить" и проверьте изменения:
$ 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»