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