Поиск…


Контейнеры с данными

Контейнеры только для данных устарели и теперь считаются анти-шаблонами!

В дни yore, перед подкомандой volume Docker, и до того, как было возможно создать именованные тома, Docker удалил тома, когда больше не было ссылок на них в каких-либо контейнерах. Контейнеры, предназначенные только для данных, устарели, поскольку Docker теперь предоставляет возможность создавать именованные тома, а также гораздо больше полезности через подкоманду docker volume . По этой причине контейнеры только для данных теперь считаются анти-шаблонами.

Многие ресурсы в Интернете за последние пару лет упоминают использование шаблона, называемого «контейнером только для данных», который представляет собой просто контейнер Docker, который существует только для хранения ссылки на объем данных.

Помните, что в этом контексте «том данных» является томом Докера, который не монтируется с хоста. Чтобы уточнить, «том данных» - это тома, который создается либо с помощью директивы VOLUME Dockerfile, либо с помощью ключа -v в командной строке в команде docker run , в частности, с форматом -v /path/on/container . Поэтому «контейнер только для данных» представляет собой контейнер, единственная цель которого заключается в том, что он подключен к тому данных, который используется --volumes-from в команде docker run . Например:

docker run -d --name "mysql-data" -v "/var/lib/mysql" alpine /bin/true

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

docker run -d --name="mysql" --volumes-from="mysql-data" mysql

Теперь контейнер mysql имеет тот же объем, что и в mysql-data .

Поскольку Docker теперь предоставляет подкоманду volume и именованные тома, этот шаблон теперь устарел и не рекомендуется.

Чтобы начать работу с подкомандой volume и названными томами, см. Создание именованного тома

Создание объема данных

docker run -d --name "mysql-1" -v "/var/lib/mysql" mysql

Эта команда создает новый контейнер из образа mysql . Он также создает новый том данных, который затем монтируется в контейнере в /var/lib/mysql . Этот том помогает любым данным, которые внутри него сохраняются за пределами срока службы контейнера. То есть, когда контейнер удаляется, его изменения в файловой системе также удаляются. Если база данных хранит данные в контейнере, а контейнер удален, все эти данные также удаляются. Объемы будут сохраняться в определенном месте даже за пределами, когда его контейнер будет удален.

Можно использовать один и тот же том в нескольких контейнерах с параметром --volumes-from командной строки:

docker run -d --name="mysql-2" --volumes-from="mysql-1" mysql

В контейнере mysql-2 теперь есть объем данных из подключенного к нему mysql-1 , также используя путь /var/lib/mysql .



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow