Mac docker volume mount с использованием osxfs не работает

Docker Desktop для Mac начал использовать osxfs для поддержки монтирования тома в MacOS. Согласно их странице, подобная команда должна монтировать каталог ~/Desktop в контейнер докера:

docker run -it -v ~/Desktop:/Desktop r-base bash

Хотя я вижу каталог Desktop, как и ожидалось, его содержимое пусто:

root@80cb534e4eeb:/# ls
bin  boot  Desktop  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@80cb534e4eeb:/# ls Desktop/
root@80cb534e4eeb:/# exit
exit 

в то время как в каталоге Desktop определенно есть файлы локально

Users-MacBook-Pro:~ user$ ls Desktop/
Screen Shot 2019-03-25 at 10.34.58.png      Screen Shot 2019-03-25 at 22.26.10.png      Screen Shot 2019-03-27 at 07.34.55.png
Screen Shot 2019-03-25 at 10.35.59.png      Screen Shot 2019-03-25 at 22.26.11.png      Screen Shot 2019-03-28 at 15.14.48.png
Screen Shot 2019-03-25 at 22.26.08.png      Screen Shot 2019-03-25 at 22.47.32.png      Screen Shot 2019-04-05 at 09.26.12.png
Screen Shot 2019-03-25 at 22.26.10 1.png    Screen Shot 2019-03-27 at 07.34.33.png 

Каталог /Users должен быть доступен в соответствии с окном настроек. Похоже, что-то не так с конфигурацией докера, но я еще не обнаружил подобных проблем. Большинство проблем, связанных с osxfs, связано с производительностью ввода-вывода. Есть идеи, как решить / исследовать эту проблему?

введите описание изображения здесь


person user2416984    schedule 13.04.2019    source источник
comment
Можете ли вы попробовать смонтировать корень виртуальной машины, на которой запущен докер, как том и посмотреть, сможете ли вы таким образом получить доступ к папке рабочего стола. Что-то вроде docker run --rm -v /:/vm_root --entrypoint=sh alpine -c 'ls -l /vm_root/Users/user/Desktop'   -  person Mattias Wadman    schedule 14.04.2019
comment
Пробовал, файлов не видно. Также попытался получить доступ к каталогу пользователя ls -l /vm_root/Users/user таким же образом, я вижу, что единственные папки - это папки, которые я уже пытался смонтировать (даже если одна не существует локально). Похоже, что каталог Users виртуальной машины не соответствует каталогу локальной файловой системы.   -  person user2416984    schedule 14.04.2019
comment
Хорошо, это странно. Может, попробовать сделать сброс докеров для mac до заводских? кажется где-то ошибка докера для Mac? работает ли какой-либо из путей, которые вы настраиваете в настройках?   -  person Mattias Wadman    schedule 14.04.2019
comment
Это сработало. Спасибо! Непонятно, чем это могло быть вызвано, у меня так и не заработало после первой установки Docker.   -  person user2416984    schedule 15.04.2019
comment
Хорошо! Должен ли я написать правильный ответ, даже если мы не знаем причину?   -  person Mattias Wadman    schedule 15.04.2019
comment
Да, хорошо для меня   -  person user2416984    schedule 16.04.2019
comment
Хорошо с ответом, который я написал? еще добавить?   -  person Mattias Wadman    schedule 16.04.2019


Ответы (1)


Сброс Docker до заводских настроек в настройках устранил проблему, но основная причина все еще неизвестна. Один из способов устранения такого рода проблем - смонтировать том корневого каталога виртуальной машины Linux, используемой Docker для Mac, и покопаться. Это можно сделать с помощью:

docker run --rm -v /:/vm_root --entrypoint=sh alpine -c 'ls -l /vm_root/<path in macOS>'
person Mattias Wadman    schedule 16.04.2019
comment
Не могли бы вы пояснить, что вы имеете в виду под <path in macOS>? - person Corey Cole; 16.08.2019
comment
Конечно! Это немного сбивает с толку. Пути, общие для докера с хоста macOS (те, которые вы видите в настройках / общих файлах), монтируются из macOS в виртуальную машину Linux, на которой запущен демон docker, по тем же путям, что и в macOS. В моем примере я показываю, как получить доступ к корневой файловой системе vm для поиска, запустив контейнер, который монтирует том. Проблема в том, что докер по веским причинам не позволяет делать -v /:/, поэтому мы должны смонтировать его где-нибудь в контейнере, поэтому я назвал его /vm_root. Попробуйте docker run --rm -ti -v /:/vm_root --entrypoint=sh alpine получить оболочку. Надеюсь, это поможет. - person Mattias Wadman; 16.08.2019
comment
Итак, под <path in macOS> я подразумеваю какой-то путь в macOS, например /Users/... и т. Д. - person Mattias Wadman; 16.08.2019