Я использую Docker Toolbox на OSX.
Я создал контейнер тома данных для хранения постоянных данных: https://docs.docker.com/userguide/dockervolumes/#creating-and-mounting-a-data-volume-container .
Я проверил, что эти данные действительно хранятся на виртуальной машине boot2docker (созданной docker-machine), а не в контейнере, чтобы они сохранялись. Однако «перезапуск docker-machine» очищает эти пользовательские данные на виртуальной машине.
Я не могу найти документацию о том, что происходит. Я нашел одно сообщение на форуме, в котором упоминается, что данные в / var / lib / docker будут сохранены, но я не смог найти никаких официальных документов, подтверждающих это, и это также кажется странным, учитывая, что приведенное выше руководство по постоянному хранению не использует этот путь или даже упоминает, что Ваши данные будут удалены.
Ожидается ли это, и если да, есть ли официальная документация по правильному пути хранения постоянных данных?
Редактировать: добавление примера неудачного senario
$ docker-machine ssh alt
docker@alt:~$ docker run -v /data:/var/lib/mysql --name mydata busybox sh -c "echo 'hello' > /var/lib/mysql/hello"
docker@alt:~$ docker run --rm --volumes-from mydata busybox sh -c "cat /var/lib/mysql/hello"
hello
docker@alt:~$ exit
$ docker-machine restart alt
Starting VM...
$ docker-machine ssh alt
docker@alt:~$ docker run --rm --volumes-from mydata busybox sh -c "cat /var/lib/mysql/hello"
cat: can't open '/var/lib/mysql/hello': No such file or directory
Я не использую boot2docker, но если / data будет стерта при перезагрузке, там хранится ваш том (
docker run -v /data:/var/lib/mysql
), поэтому он будет потерян.То, что вы делаете, также объединяет два разных шаблона для обработки постоянства объема. Чтобы получить постоянство, контейнеры могут монтировать тома из указанного местоположения в хост-системе (которая предположительно является постоянным) или могут быть связаны с контейнером данных и смонтированы с ним
--volumes-from
. Похоже, что подход файловой системы хоста не подходит для boot2docker, и вы должны использовать шаблон объема данных (только).Предположительно, вы должны создавать свой контейнер данных с
-v /var/lib/mysql
, а не-v /data:/var/lib/mysql
.источник
Обратите внимание, что я использую Docker для Mac бета, которая использует Xhyve VM.
Содержимое / var / lib / boot2docker будет сохраняться между перезагрузками компьютера. Поэтому, если вы хотите, чтобы определенные файлы были доступны на вашем виртуальном компьютере, поместите их в этот каталог.
Если вы хотите, чтобы они были доступны в другом месте для запуска докер-контейнеров, вы можете добавить следующее в / var / lib / boot2docker / profile:
Если вы хотите добавить в системные файлы другую конфигурацию, которая будет сохраняться после перезапуска vm, например, дополнительные значения в вашем файле hosts, тогда вы можете добавить команду, такую как приведенная ниже, в / var / lib / boot2docker / profile:
Надеюсь, поможет
источник