Доступ к содержимому Docker Volume в MacOS

Когда я делаю docker volume inspect <dockerid> на Mac, я вижу путь к данным, это отображается как /var/lib/docker/volumes/<volume name>

На Mac эта ссылка не существует, потому что докер работает внутри очень маленькой виртуальной машины.

Я могу использовать screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty, чтобы войти в виртуальную машину, а затем перейти к папке, чтобы увидеть тома.

Все понял, но у меня вопрос: Как связать содержимое этих томов на моем хост-компьютере?

Я пробовал это: docker run -it --volume hello:/hello2 --name access_volumes busybox:latest /bin/sh Где привет — это имя созданного мной тома.

Я могу связать папку на моем хост-компьютере с контейнером, но я хочу сделать резервную копию содержимого или отредактировать содержимое тома с моего хост-компьютера.

Как я могу это сделать?

Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
10
0
10 263
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Знакомы ли вы с docker-compose: вы можете связать свою папку с контейнером с помощью volumes можно так связать

volumes:
  - ./your_host_folder:/folder_in_container/

Да, я использовал композицию - это единственный способ получить доступ к тому? Или я могу получить доступ к Тому напрямую без присутствия контейнера?

jwknz 10.04.2019 04:15

Да, это доступ к папке на моем хост-компьютере, но он не имеет доступа к тому. Я хочу иметь такой формат: host-folder => docker-volume => docker-container

jwknz 10.04.2019 04:21

Круто, и если бы я мог получить доступ к тому, не загружая контейнер, это было бы лучше. Я хочу, чтобы том был отделен от контейнера. Поскольку докер создает том и оставляет его на моей машине, если я специально не удалю его, я должен иметь доступ к нему правильно?

jwknz 10.04.2019 04:24
Ответ принят как подходящий

Я не думаю, что вы можете сделать это без контейнера. Вам нужно что-то вроде эта документация для резервного копирования:

docker run --rm --volume hello:/data -v $(pwd):/backup busybox tar cvf /backup/backup.tar /dbdata

или для модификации:

docker run -d --name access_volume --volume hello:/data busybox
docker cp access_volume:/data local-data
# modify local-data
docker cp local-data access_volume:/data

В конце концов, это сработало для меня со всеми остальными строительными блоками, которые у меня были. Спасибо за решение

jwknz 15.04.2019 11:24

Если вы создали том с помощью Docker-Compose, добавьте к нему префикс имени папки. Вы можете проверить тома с помощью «docker volume ls».

Hugo Logmans 12.05.2020 11:01

например, вы создаете том с файлом Docker-Compose.yml:

...

influxdb:
 image: influxdb:latest
 container_name: influxdb
 restart: always
 ports:
   - "8086:8086"
   - "9092:9092"
 volumes:
  - type: volume
    source: vol_influxdb
    target: /var/lib/influxdb

...

Вы не можете найти этот том «vol_influxdb» на своем Mac, потому что он находится в Docker-VM. Запустите свой Mac-терминал и введите:

screen /Users/<username>/Library/Containers/com.docker.docker/Data/vms/0/tty 

Теперь вы находитесь в Docker-VM и можете искать свой том с помощью:

cd /var/lib/docker/volumes/<VolumeName>/_data/

Когда я набираю screen tty, я получаю: [экран завершается] Мои контейнеры работают, и я нахожусь в правильном каталоге. Я пробовал также как root. Любой совет? Спасибо

Giggioz 06.08.2020 09:56

@Giggioz: код screen /Users/$USER/Library/Containers/com.docker.docker/Data/vms/0‌​/tty не работает, проверьте это: докер/для Macа такжесвязь

Romanow 13.12.2020 11:50

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