Поиск томов данных в 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 для копирования файлов между хостом и контейнер.