Какова точная разница между двумя флагами, используемыми в командах громкости Docker -v
и --volumes-from
. Мне кажется, что они выполняют ту же работу, рассмотрим следующий сценарий.
Сначала давайте создадим том с именем myvol
, используя команду:
$ docker volume create myvol
Теперь создайте и запустите контейнерс именем c1
, использующим myvol
и входящим в его bash:
$ docker run -it --name c1 -v myvol:/data nginx bash
Позволяет создать файл test.txt
в смонтированном каталоге контейнера как:
root@766f90ebcf37:/# touch /data/test.txt
root@766f90ebcf37:/# ls /data
test.txt
Использование-volume
flag:
Теперь создайте еще один контейнер с именем c2
, который также использует myvol
:
$ docker run -it --name c2 -v myvol:/data nginx bash
Как и ожидалось, новый сгенерированный контейнер c2
также имеет доступ ко всемфайлы myvol
root@393418742e2c:/# ls /data
test.txt
Теперь делаем то же самое с --volumes-from
Создание контейнера с именем c3
с использованием томов из контейнера c1
$ docker run -it --name c3 --volumes-from c1 nginx bash
Это приведет к тому же самому в c3
:
root@27eacbe25f92:/# ls /data
test.txt
Дело в том, что -v
и --volumes-from
работают одинаково, то есть для обмена данными между контейнерами, тогда почему они разныефлаги и что --volumes-from
может сделать то, что -v
не может сделать?