2016-04-05 5 views
0

Кажется, я ничего не могу найти. В многочисленных учебниках указано, что наличие контейнера с данными - это то, как вы достигаете постоянных данных в докере. Однако я не понимаю, что данные только кажутся постоянными, пока существует только контейнер данных. Когда он выключается и перезапускается, данные просто исчезают.Docker 'data only container' выключен

Учитывая, что никакая система не будет иметь время на 100%, и я хочу, чтобы содержимое долгосрочной базы данных сохранялось за перезагрузкой физической системы и т. Д. Как правильно сохранить данные?

ответ

2

В целом ряде учебных пособий указано, что наличие контейнера только для данных - это то, как вы достигаете постоянных данных в докере.

Обратите внимание, что с последними версиями Docker это уже не так; тома теперь являются «первоклассными» гражданами и могут быть созданы/удалены/etc с помощью команды docker volume. Это означает, что вы можете создать постоянный объем данных, запустив:

$ docker volume create --name myvolume 

А позже вы можете прикрепить к нему так:

$ docker run -v myvolume:/data ... 

То, что я не понимаю, однако, что данные только кажется постоянным, пока существует только контейнер данных.

Это поможет, если вы хотите включить в свой вопрос информацию о том, как вы создали свой контейнер данных. Обратите внимание, что контейнер с данными только не должен быть «работает», чтобы быть полезным; он просто должен существовать. Так, например, я мог бы создать контейнер данных только так:

$ docker run -v /data --name datacontainer busybox true 

Это будет, конечно, запустить /bin/true, а затем выйти сразу:

$ docker ps -a 
47568a43d386  busybox      "true"     7 seconds ago  Exited (0) 6 seconds ago      datacontainer 

Но даже если контейнер вышел Я не могу использовать объем в новом контейнере:

$ docker run -it --volumes-from datacontainer busybox sh 
Filesystem   1K-blocks  Used Available Use% Mounted on 
/dev/mapper/tank-docker--vol 
         83844100 2398688 81445412 3% /data 

Этот механизм является то, что вы будете использовать, чтобы получить постоянные объемы в Докер раньше, чем 1,10, но больше нет (1.9, может быть?) необходимо из-за команды docker volume.

+0

Просто чтобы добавить к этому для всех, кто борется в моем пути. Контейнер только для данных создает том, который имеет сгенерированное имя (например, 4488845jgjg3). Когда вы следующий экземпляр контейнера, он создает второй том с другим именем. Оба тома существуют на главной машине, но если вы не ссылаетесь на них по id, вы автоматически не получаете к ним доступ. – Andy

+0

Вот почему вы даете контейнеру данных имя и обращаетесь к томам с помощью '--volumes-from' (так что вам не нужно беспокоиться об идентификаторе отдельных томов). – larsks

Смежные вопросы