Что означает «rw» при подключении, монтируя каталог - PullRequest
0 голосов
/ 13 декабря 2018

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

docker run -v /some-host/path:/some-container/path:rw

Эти же параметры применимы в docker.compose.yml

services:
  myService:
    image: some/image
    volumes:
      - /some-host/path:/some-container/path:rw

Я думал, что указание rw будет означать, что контейнер сможет читать и записывать в этот каталог (независимо от пользователя).Вопреки моему убеждению, когда каталог хоста не существует, docker создает его как drwxr-xr-x 2 root root независимо от того, что я указываю.Приложение в контейнере не работает на root, поэтому оно пытается записать на подключенный диск и получить Permission denied.

Я копал документы докера, даже нашел это Проблема github , описывающая ту же проблему, но не может найти ничего определенного, объясняющего ожидаемое поведение.

Итак, что конкретно означает rw (чтение / запись), если указано в качестве третьего вариантадля привязанных подключенных каталогов?

1 Ответ

0 голосов
/ 14 декабря 2018

Как говорит DavidMaze в комментариях

так же, как / на вашем хосте монтируется для чтения-записи, но не доступна для записи во всех файлах;если бы он был смонтирован только для чтения, никто не смог бы написать какой-либо файл.

И документы :

Если ни «rw», ни «ro»затем том монтируется в режиме чтения-записи.

И

Если вы укажете абсолютный путь для host-dir, Docker привязывает монтирование кпуть, который вы указываете.

Каталог «смонтирован» как rw по умолчанию.Поэтому подумайте, что для записи в каталог недостаточно монтирования rw, вам также необходимы права доступа к нему.С другой стороны, полных прав доступа к файлам недостаточно, если каталог подключен только для чтения.Думайте об этом как о двухслойных разрешениях.

Также :

Хотя возможность связывания монтирования монтируется только для чтения.Контейнеры являются одним из примеров: администратор может захотеть создать контейнер, в котором процессы могут выполняться от имени пользователя root.Для этого контейнера может быть полезно иметь доступ к файловым системам на хосте, но контейнер не обязательно должен иметь доступ на запись к этим файловым системам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...