Нижче наведено те, що я зробив для монтажу одного з моїх хост-директорій до контейнера. Це складніше, ніж це звучить, тому що ми хотіли б цього досягти
- Всередині контейнера ми повинні мати можливість записувати до каталогу.
- Поза контейнера ми повинні мати можливість записувати у файли та каталоги, створені всередині контейнера.
Ознайомившись із різними статтями в Інтернеті (найбільш корисною є ця проблема з github ), ось як я це вирішую. Трюк полягає в тому, щоб зіставити uid і gid користувача-хоста на uid і gid користувача всередині контейнера.
Припустимо, я збираюся монтуватись /home/breakds/projects
до того самого місця в контейнері. Зовнішній каталог належить користувачеві breakds
, чий uid та gid є 1000
.
Потім я створив користувача в контейнері під назвою debian
, чий uid та gid трапився 1000
так само (тому що це перший некористувальний користувач). Тоді я буду створювати (lxc) профі на хості користувачем
lxc profile edit breakds
А нижче вміст профілю (я вважаю, він у форматі ямл):
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
Потім застосуйте цей профіль до цього контейнера назавжди:
$ lxc profile apply <my container> breakds
Це повинно зробити трюк.
ПРИМІТКА . Зауважте, що перед переходом на цей профіль переконайтесь, що всі директори або файли, власником / групою яких є debian, повинні бути видалені (і, ймовірно, відтворені після перемикання). Це тому, що після відображення uid та gid-карти їх право власності стане недійсним. Спочатку я думав, оскільки я просто картографую 1000 до 1000, все повинно бути добре, але я думаю, що тут я щось пропустив, і було б чудово, якщо хтось може порадити, як це вирішити без злому.