2015-08-28 2 views
1

Я только что прошел THIS учебник по youtube и попытка не использовать использование команды -v, I.E. почему парень в учебнике использует команду -v? Он использует команду, как это,Понимание команды docker -v

docker run -v /var/lib/mysql --name=my_datastore -d busybox echo "my datastore" 

Теперь я понимаю вышеприведенную команду в степени I.E.

--name=my_datastore 

Дает контейнеру определенное имя.

-d busybox 

Вышеприведенная команда ищет для BusyBox изображения, если не найдено будет тянуть его из dockerhub и чем запустить его в фоновом режиме, как демон.

после выполнения команды запуска, приведенная ниже строка выводится на консоль.

echo "my datastore" 

Теперь часть я не понимаю, заключается в следующем:

-v /var/lib/mysql 

почему команда -v используется здесь и почему путь /var/lib/mysql указан? Мне трудно понять, почему эта строка используется и в каком контексте? Может кто-нибудь объяснить?

+0

Если вы выполняете 'docker run -help', вы получите, среди прочего,' -v, --volume = [] Привязать монтировку тома ' – user2915097

+0

@ user2915097 Я не понимаю контекста его использования , и поэтому я задал вопрос, не могли бы вы объяснить ... шаг за шагом ко мне, что происходит, мне тяжело ставить блок togeather! –

+0

Обычно мы помещаем источник и пункт назначения, например '-v $ HOME/.rainbow_oauth:/root/.rainbow_oaut' (это пример из https://blog.jessfraz.com/post/docker-containers-on- the-desktop /) – user2915097

ответ

7

Аргумент -v (или --volume) для docker run предназначен для создания пространства для хранения внутри контейнера, который отделен от остальной файловой системы контейнера. Есть две формы команды.

При заданном одном аргументе, таком как -v /var/lib/mysql, это выделяет пространство из Docker и монтирует его в данном месте. Это прежде всего способ распределения хранилища от Docker, который составляет , отличный от из вашего сервисного контейнера. Например, вам может потребоваться запустить более новую версию приложения базы данных, что предполагает срыв существующего контейнера MySQL и запуск нового. Вы хотите получить данные , чтобы выжить в этом процессе, поэтому вы храните его в томе, доступ к которому возможен в контейнере базы данных тура.

Когда два аргумента (host_path:container_path), как -v /data/mysql:/var/lib/mysql, это монтирует указанный каталог на хосте внутри контейнера по указанному пути (и, чтобы быть точными, это может также использоваться, чтобы выставить HOST файлов внутри контейнер, например, -v /etc/localtime:/etc/localtime сделает /etc/localtime на хосте, доступном как /etc/localtime внутри контейнера). Это способ подачи информации в ваш контейнер или предоставление способа для вашего контейнера сделать файлы доступными для хоста.

Если контейнер имеет объемы доступны, либо за счет использования линии аргумента -v команды или через VOLUME директивы в Dockerfile, эти объемы могут быть доступны из другого контейнера, используя --volumes-from вариант:

docker run --volumes-from my_datastore ... 

Это сделает любые тома, определенные в исходном контейнере, доступными в контейнере, который вы начинаете с --volumes-from.

Это более подробно описано в документации Managing data in containers.

+0

спасибо larsks !! –

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