Имя точки монтирования для тома докера - PullRequest
0 голосов
/ 21 июня 2019

С помощью следующей команды:

docker container run -dit --name testcontainer –mount source= ubervol, target=/vol alpine:latest

источник точка монтирования имя равно ubervol, указывая на цель /vol, который находится в контейнере, как показано ниже:

user@machine:~$ docker container exec -it b4fd sh
/ # pwd
/ 
/ # ls vol
vol

enter image description here

ubervol находится вне контейнера на /var/lib/docker/volumes/ubervol путихост-машина (хост-хост-демон Docker)


С указанным ниже Dockerfile:

# Create the folders and volume mount points
RUN mkdir -p /var/log/jenkins
RUN chown -R jenkins:jenkins /var/log/jenkins

RUN mkdir -p /var/jenkins_home
RUN chown -R jenkins:jenkins /var/jenkins_home

VOLUME ["/var/log/jenkins", "/var/jenkins_home"]

Насколько я понимаю, target находится внутри контейнера с путем /var/log/jenkins&& /var/jenkins_home


Что такое имя точки монтирования источника?для каждой цели (/var/log/jenkins && /var/jenkins_home)

Каков путь к имени этой точки монтирования на хост-компьютере?

1 Ответ

2 голосов
/ 22 июня 2019

Расположение данных тома на хосте - это деталь реализации, которой не стоит пытаться воспользоваться.В некоторых средах, таких как приложение Docker Desktop для Mac, данные будут скрыты внутри виртуальной машины, к которой у вас нет прямого доступа.Хотя я редко сталкивался с этим, существуют также альтернативные драйверы томов , которые позволят вам хранить контент в другом месте.

Каждый раз, когда вы docker run создаете контейнер на основе изображения, которое объявляетVOLUME, если вы не смонтируете что-то еще с опцией -v, Docker создаст анонимный том и смонтирует его там для вас (так же, как если бы вы не указали --mount source=...).Если вы запускаете несколько контейнеров с одного и того же образа, я считаю, что каждый из них получает новый том (с другим путем к хосту, если он есть).Dockerfile не может управлять расположением тома на хосте;оператор может смонтировать другой именованный том или каталог хоста.

На практике практически нет смысла использовать VOLUME в Dockerfile.Вы можете использовать docker run -v независимо от того, есть ли VOLUME для того же каталога.Его основной эффект заключается в том, чтобы не позволил будущим RUN командам изменить этот каталог .

...