Ниже приведено то, что я сделал, чтобы подключить один из моего каталога хоста к контейнеру. Это сложнее, чем кажется, потому что мы хотели бы достичь
Внутри контейнера мы должны быть в состоянии записать в каталог. Вне контейнера мы должны иметь возможность записывать файлы и каталоги, созданные внутри контейнера.После прочтения различных статей в Интернете (самая полезная из них - это проблема github), вот как я это решаю. Хитрость заключается в том, чтобы сопоставить uid и gid пользователя-хозяина с uid и gid пользователя внутри контейнера.
Предположим, что я собираюсь установить /home/breakds/projects в то же самое место в контейнере. Внешний каталог принадлежит пользователю breakds, uid и gid которого 1000.
Затем я создал пользователя в контейнере с именем debian, uid и gid которого были 1000, а также (поскольку это первый пользователь без root). Затем я создам (lxc) профиль на хосте
lxc profile edit breakds
. Ниже приведено содержание профиля (я считаю, что это в формате yaml):
name: breakds
config:
raw.lxc: |
lxc.id_map =
lxc.id_map = u 0 165536 999
lxc.id_map = g 0 165536 999
lxc.id_map = u 1000 1000 1
lxc.id_map = g 1000 1000 1
lxc.id_map = u 1001 166537 64535
lxc.id_map = g 1001 166537 64535
user.vendor-data: |
packages:
- bash
description: allow home dir mounting for breakds
devices:
eth0:
name: eth0
nictype: bridged
parent: lxdbr0
type: nic
projects:
path: /home/breakds/projects
source: /home/debian/projects
type: disk
[d9 ] Затем примените этот профиль к этому контейнеру навсегда: $ lxc profile apply <my container> breakds
Это должно сделать трюк.
ПРИМЕЧАНИЕ. Обратите внимание, что перед переключением на этот профиль убедитесь, что все директивные круги или файлы, владелец / группа которых debian должны быть удалены (и, вероятно, воссозданы после переключения). Это связано с тем, что после отображения uid и gid их право собственности станет недействительным. Я изначально думал, что, поскольку я просто сопоставляю 1000-1000, все должно быть хорошо, но я думаю, что я что-то пропустил, и было бы здорово, если бы кто-то мог посоветовать, как разрешить это без взлома.