2016-02-10 3 views
2

Я новичок в докерах. Вы можете посмотреть мои последние вопросы здесь и посмотреть, что я задавал вопросы по этой линии. Я внимательно прочитал документы, а также прочитал несколько статей в Интернете (что довольно сложно, учитывая быстрое управление версиями в докере), но я до сих пор не могу получить четкое представление о том, как я должен использовать контейнеры и их влияние на устойчивость ,Докеры выдерживают стойкость и срок службы контейнера

Официальный Postgres изображение создает объем в его Dockerfile, используя эту команду

VOLUME /var/lib/postgresql/data 

И в readme.md файл показывает только один пример того, как запустить файл

docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres 

Когда я пытаюсь что я могу видеть (с помощью «docker inspect some-postgres»), что созданный том живет в случайном каталоге на моем хосте и, похоже, «принадлежит» этому конкретному контейнеру.

Так вот некоторые вопросы, которые могут помочь моему пониманию:

  1. Он смотрит (из официальных документы Postgres изображения), что предполагаемое использование является использование «Docker запустить», чтобы создать контейнер, и «старт докер «после этого (этот последний бит я понял из-за того, что используются -d и -name). Это имеет смысл для меня, но конфликты с большим количеством информации, которую я видел относительно контейнеров, должны быть эфемерными. Если каждый раз вращать новый контейнер, то конфигурация VOLUME по умолчанию в файле Docker не работает для устойчивости. Каков правильный способ сделать что-то?
  2. Учитывая, что это правильно (я могу запускать один раз и запускать много раз), единственной причиной, которую я вижу для команды VOLUME в файле Docker, является производительность ввода-вывода из-за обхода файловой системы CoW. Это правильно?
  3. Не могли бы вы ясно объяснить, что не так с использованием этого подхода по сравнению с (я думаю, неофициально) рекомендуемым способом использования контейнера данных? Я хотел бы знать плюсы и минусы для моей конкретной ситуации, которая является приложением узла js для интрасети.

Спасибо, Awer

ответ

0

Вы правы, что вы можете запустить контейнер с помощью «Docker запустить» и запустить его снова в будущем с помощью «старт Докер» если вы не удалили контейнер. Вы также правы, что контейнеры докеров должны быть эфемерными, и вы не должны быть в плохом состоянии, если контейнер исчезнет. Что вы можете сделать, это подключить том в контейнер докеров к месту хранения базы данных.

docker run -v /postgres/storage:/container/postgres --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres 

Если вы знаете место, где база данных записывает внутри контейнера вы можете установить его правильно и тогда, даже если вы удалите контейнер Postgres, при запуске резервного копирования всех ваших данных будут сохраняться. Возможно, вам придется подключить другие области, которые также контролируют конфигурации, если вы не измените и не сохраните контейнер.

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