Когда я делаю 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
Где привет — это имя созданного мной тома.
Я могу связать папку на моем хост-компьютере с контейнером, но я хочу сделать резервную копию содержимого или отредактировать содержимое тома с моего хост-компьютера.
Как я могу это сделать?
Знакомы ли вы с docker-compose: вы можете связать свою папку с контейнером с помощью volumes
можно так связать
volumes:
- ./your_host_folder:/folder_in_container/
Да, это доступ к папке на моем хост-компьютере, но он не имеет доступа к тому. Я хочу иметь такой формат: host-folder => docker-volume => docker-container
Круто, и если бы я мог получить доступ к тому, не загружая контейнер, это было бы лучше. Я хочу, чтобы том был отделен от контейнера. Поскольку докер создает том и оставляет его на моей машине, если я специально не удалю его, я должен иметь доступ к нему правильно?
Я не думаю, что вы можете сделать это без контейнера. Вам нужно что-то вроде эта документация для резервного копирования:
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
В конце концов, это сработало для меня со всеми остальными строительными блоками, которые у меня были. Спасибо за решение
Если вы создали том с помощью Docker-Compose, добавьте к нему префикс имени папки. Вы можете проверить тома с помощью «docker volume ls».
например, вы создаете том с файлом 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: код screen /Users/$USER/Library/Containers/com.docker.docker/Data/vms/0/tty
не работает, проверьте это: докер/для Macа такжесвязь
Да, я использовал композицию - это единственный способ получить доступ к тому? Или я могу получить доступ к Тому напрямую без присутствия контейнера?