Почему в Docker есть тома Docker и контейнеры томов

Почему в Docker есть тома Docker и контейнеры томов? В чем основная разница между ними. Я прочитал докерскую документацию, но не совсем понял это.

1 ответ

Решение

Тома Docker

Тома Docker можно использовать для создания нового тома в вашем контейнере и для монтирования его в папку вашего хоста. Например, вы можете смонтировать папку /var/log вашего хоста Linux в ваш контейнер, как это:

docker run -d -v /var/log:/opt/my/app/log:rw some/image

Это создаст папку с именем /opt/my/app/log внутри вашего контейнера. И эта папка будет /var/log на вашем хосте Linux. Вы можете использовать это для сохранения данных или обмена данными между вашими контейнерами.

Объемные контейнеры Docker

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

Этот контейнер будет иметь объем, который вы хотите разделить между контейнерами, например:

docker run -d -v /some/data/to/share --name MyDataContainer some/image

Этот контейнер будет запускать некоторое приложение (например, базу данных) и имеет папку с именем /some/data/to/share, Вы можете поделиться этой папкой с другим контейнером сейчас:

docker run -d --volumes-from MyDataContainer some/image

Этот контейнер также увидит тот же объем, что и в предыдущей команде. Вы можете разделить том между многими контейнерами, как вы могли бы использовать общую папку вашего хоста. Но это не будет загрязнять ваш хост данными - все по-прежнему заключено в изолированные контейнеры.

Мои ресурсы

https://docs.docker.com/userguide/dockervolumes/

Другие вопросы по тегам