Поиск томов данных в Docker
Я пытаюсь изучить docker на данный момент, и я запутываюсь в том, где на самом деле существуют тома данных.
Я использую Docker для windows. (Windows 10)
в документах они говорят, что запуск docker inspect на объекте даст вам source:https://docs.docker.com/engine/tutorials/dockervolumes/#locating-a-volume
$ docker inspect web
"Mounts": [
{
"Name": "fac362...80535",
"Source": "/var/lib/docker/volumes/fac362...80535/_data",
"Destination": "/webapp",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
]
однако я этого не вижу, я получаю следующее:
$ docker inspect blog_postgres-data
[
{
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/blog_postgres-data/_data",
"Name": "blog_postgres-data",
"Options": {},
"Scope": "local"
}
]
может кто-нибудь помочь мне? Я просто хочу знать, где мой том данных на самом деле существует, это на моей главной машине? Если да, то как я могу получить путь к нему?
спасибо
2 ответов
каталог Тома /var/lib/docker/volumes/blog_postgres-data/_data
и /var/lib/docker
как правило, устанавливают на C:\Users\Public\Documents\Hyper-V\Virtual hard disks
в любом случае вы можете проверить это, посмотрев окно настройки.
вы можете обратиться к это docs для получения информации о том, как обмениваться дисками с docker в windows.
кстати, Source
это расположение на хосте и Destination
расположение внутри контейнера в следующие вывод:
"Mounts": [
{
"Name": "fac362...80535",
"Source": "/var/lib/docker/volumes/fac362...80535/_data",
"Destination": "/webapp",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
]
===========================================================================
обновление, чтобы ответить на вопросы в комментарии:
мое главное любопытство здесь в том, что обмен изображениями и т. д. велик, но как я могу поделиться своими данными?
на самом деле volume
предназначен для этой цели (управление данными в контейнере docker), данные в томе сохраняются на хосте FS и изолированы с жизненным кругом docker контейнер / изображение. Вы можете поделиться своими данными с объем:
-
Mount Docker volume для размещения и повторного использования
docker run -v /path/on/host:/path/inside/container image
тогда все ваши данные будут сохранены в
/path/on/host
, вы можете сделать резервную копию, скопировать его на другую машину и повторно запустить контейнер с тем же Томом. -
создание и монтирование контейнера данных.
создать контейнер данных:
docker create -v /dbdata --name dbstore training/postgres /bin/true
Запустить другой контейнер на основе этого контейнера используя--volumes-from
:docker run -d --volumes-from dbstore --name db1 training/postgres
, то все данные, генерируемыеdb1
будет сохраняться в объеме контейнераdbstore
.
для получения дополнительной информации вы можете обратиться к официальные документы docker volumes, попросту говоря, volumes
- это просто каталог на вашем хосте со всеми данными контейнера, поэтому вы можете использовать любые методы, которые вы использовали раньше для резервного копирования / обмена данными.
могу ли я нажать громкость на docker-hub, как я делаю с образы?
нет, изображение docker-это то, что вы доставляете, но данные-нет. Вы можете создавать резервные копии/сохранять / обмениваться данными с любым методом, который вам нравится, но нажатие данных в реестр docker для обмена им не имеет никакого смысла.
я могу сделать резервные копии и т. д?
да, как написал выше :-)
каждый контейнер имеет свою собственную файловую систему, которая не зависит от файловой системы. При запуске контейнера с флагом-v можно монтировать Тома таким образом, чтобы узел и контейнер видели одни и те же данные (как в docker run-V hostFolder:containerFolder).
первый вывод, который вы напечатали, описывает такой смонтированный том (следовательно, монтируется), где "/var/lib/docker/volumes/fac362...80535 / _data "(хост) монтируется в" / webapp " (контейнер).
Я предполагаю, что вы не использовали -в следовательно, папка не монтируется и доступна только в файловой системе контейнера, которую вы можете найти в "/var/lib/docker/volumes/blog_postgres-data/_data". Эти данные будут удалены, если вы удалите контейнер (docker-rm), поэтому было бы неплохо смонтировать папку.
Что касается вопроса, где вы можете получить доступ к этим данным из windows. Насколько мне известно, docker для windows использует подсистему bash в Windows 10. Я бы попытался запустить bash для windows10 и перейти в эту папку или узнать как получить доступ к папкам linux из windows 10. Проверьте это страница для FAQ по подсистеме linux в windows 10.
Update: вы также можете использовать docker cp для копирования файлов между хостом и контейнер.