Я проверил, что эти данные действительно хранятся на виртуальной машине boot2docker (созданной docker-machine), а не в контейнере, так что они будут сохраняться.Однако "перезагрузка docker-machine" удаляет эти пользовательские данные на виртуальной машине.
Я не могу найти документацию о том, что происходит. Я нашел одно сообщение на форуме, в котором упоминается, что данные в / var / lib / docker будут сохранены, но я не смог найти никаких официальных документов, подтверждающих это, и это также кажется странным, учитывая, что приведенное выше руководство по постоянному хранению не использует этот путь и даже не упоминает, что ваши данные будут удалены.
Ожидается ли это, и если да, то существует ли какая-либо официальная документация о правильном пути для хранения постоянных данных?
Редактировать: Добавление примера сбоя senario
$ docker-machine ssh altdocker@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"hellodocker@alt:~$ exit$ docker-machine restart altStarting VM...$ docker-machine ssh altdocker@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.
Содержимое /var/lib/boot2docker будет сохраняться между перезапусками компьютера.Поэтому, если вы хотите, чтобы определенные файлы были доступны на вашей виртуальной машине, поместите их в этот каталог.
Если вы хотите, чтобы они были доступны в другом месте для запуска контейнеров docker, вы можете добавить следующее в /var /lib / boot2docker /profile:
Если вы хотите добавить другую конфигурацию в системные файлы, которые будут сохраняться между перезапусками виртуальной машины, например дополнительные значения в вашем файле hosts, вы можете добавить команду, подобную приведенной ниже, в /var/lib/boot2docker/profile: