Не удается запустить контейнер LXD при изменении информации о subuid и subgid для root.

Новичок в LXD и столкнулся с проблемой, когда я пытаюсь создать карту subuid и subgid для пользователя root моего контейнера, чтобы при записи root в каталог /megalith это был UID/GID хост-пользователя (1000 :1000), а не uid/gid 165536:65536. Я пытаюсь следовать инструкциям, которые перечислены здесь:

http://insights.ubuntu.com/2016/12/08/mounting-your-home-directory-in-lxd/

Но когда я пытаюсь запустить контейнер, я получаю ошибки, перечисленные ниже. Если я верну записи root subuid и subgid обратно в root:165536:65536, все начнет работать правильно, за исключением того, что когда я пишу в /megalith, UID и GID, очевидно, равны 165536:65536.

Есть ли что-то еще, что мне нужно сделать, чтобы корневые сопоставления subuid и subgid работали правильно, чего может не быть в документации или что я могу пропустить?

cliff@reventon /megalith $ id
uid=1000(cliff) gid=1000(cliff) groups=1000(cliff),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),130(sambashare),132(lxd)

cliff@reventon /megalith $ cat /etc/subuid
cliff:100000:65536
lxd:165536:65536
root:1000:1

cliff@reventon /megalith $ cat /etc/subgid
cliff:100000:65536
lxd:165536:65536
root:1000:1

cliff@reventon /megalith $ lxc init ubuntu-daily:z zestytest
Creating zestytest

cliff@reventon /megalith $ lxc config set zestytest raw.idmap 'both 1000 1000'

cliff@reventon /megalith $ lxc config device add zestytest megalith disk source=/megalith path=/megalith
Device megalith added to zestytest

cliff@reventon /megalith $ lxc start zestytest
error: Error calling 'lxd forkstart zestytest /var/lib/lxd/containers /var/log/lxd/zestytest/lxc.conf': err='exit status 1'
  lxc 20170112215311.265 ERROR lxc_start - start.c:lxc_spawn:1163 - Failed to set up id mapping.
  lxc 20170112215311.303 ERROR lxc_start - start.c:__lxc_start:1338 - Failed to spawn container "zestytest".
  lxc 20170112215311.855 ERROR lxc_conf - conf.c:run_buffer:347 - Script exited with status 1
  lxc 20170112215311.855 ERROR lxc_start - start.c:lxc_fini:546 - Failed to run lxc.hook.post-stop for container "zestytest".
  lxc 20170112215311.858 ERROR lxc_conf - conf.c:userns_exec_1:4374 - Error setting up child mappings
  lxc 20170112215311.858 ERROR lxc_cgfsng - cgroups/cgfsng.c:recursive_destroy:1274 - Error destroying /sys/fs/cgroup/systemd//lxc/zestytest
  lxc 20170112215311.861 ERROR lxc_conf - conf.c:userns_exec_1:4374 - Error setting up child mappings
  lxc 20170112215311.861 ERROR lxc_cgfsng - cgroups/cgfsng.c:recursive_destroy:1274 - Error destroying /sys/fs/cgroup/cpuset//lxc/zestytest
  lxc 20170112215311.864 ERROR lxc_conf - conf.c:userns_exec_1:4374 - Error setting up child mappings
  lxc 20170112215311.864 ERROR lxc_cgfsng - cgroups/cgfsng.c:recursive_destroy:1274 - Error destroying /sys/fs/cgroup/hugetlb//lxc/zestytest
  lxc 20170112215311.867 ERROR lxc_conf - conf.c:userns_exec_1:4374 - Error setting up child mappings
  lxc 20170112215311.867 ERROR lxc_cgfsng - cgroups/cgfsng.c:recursive_destroy:1274 - Error destroying /sys/fs/cgroup/cpu//lxc/zestytest
  lxc 20170112215311.869 ERROR lxc_conf - conf.c:userns_exec_1:4374 - Error setting up child mappings
  lxc 20170112215311.869 ERROR lxc_cgfsng - cgroups/cgfsng.c:recursive_destroy:1274 - Error destroying /sys/fs/cgroup/pids//lxc/zestytest
  lxc 20170112215311.872 ERROR lxc_conf - conf.c:userns_exec_1:4374 - Error setting up child mappings
  lxc 20170112215311.872 ERROR lxc_cgfsng - cgroups/cgfsng.c:recursive_destroy:1274 - Error destroying /sys/fs/cgroup/perf_event//lxc/zestytest
  lxc 20170112215311.875 ERROR lxc_conf - conf.c:userns_exec_1:4374 - Error setting up child mappings
  lxc 20170112215311.875 ERROR lxc_cgfsng - cgroups/cgfsng.c:recursive_destroy:1274 - Error destroying /sys/fs/cgroup/freezer//lxc/zestytest
  lxc 20170112215311.878 ERROR lxc_conf - conf.c:userns_exec_1:4374 - Error setting up child mappings
  lxc 20170112215311.878 ERROR lxc_cgfsng - cgroups/cgfsng.c:recursive_destroy:1274 - Error destroying /sys/fs/cgroup/memory//lxc/zestytest
  lxc 20170112215311.881 ERROR lxc_conf - conf.c:userns_exec_1:4374 - Error setting up child mappings
  lxc 20170112215311.881 ERROR lxc_cgfsng - cgroups/cgfsng.c:recursive_destroy:1274 - Error destroying /sys/fs/cgroup/net_cls//lxc/zestytest
  lxc 20170112215311.884 ERROR lxc_conf - conf.c:userns_exec_1:4374 - Error setting up child mappings
  lxc 20170112215311.884 ERROR lxc_cgfsng - cgroups/cgfsng.c:recursive_destroy:1274 - Error destroying /sys/fs/cgroup/devices//lxc/zestytest
  lxc 20170112215311.886 ERROR lxc_conf - conf.c:userns_exec_1:4374 - Error setting up child mappings
  lxc 20170112215311.886 ERROR lxc_cgfsng - cgroups/cgfsng.c:recursive_destroy:1274 - Error destroying /sys/fs/cgroup/blkio//lxc/zestytest

Try `lxc info --show-log zestytest` for more info

person Cliff Friedel    schedule 13.01.2017    source источник


Ответы (2)


Если я верну записи root subuid и subgid обратно в root:165536:65536

Вам нужны диапазоны 165536:65536 и 1000:1.

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

person vila    schedule 19.01.2017
comment
Спасибо за вашу помощь! Все еще вижу проблему после вашего предложения. Вот мои файлы /etc/subuid и /etc/subgid: cliff@reventon ~ $ cat /etc/subuid cliff:100000:65536 lxd:165536:65536 root:165536:65536 root:1000:1 cliff@reventon ~ $ cat /etc/subgid cliff:100000:65536 lxd:165536:65536 root:16553:65536 root:1000:1 Я перезапустил lxd с помощью sudo service lxd restart, и это, похоже, сработало. Когда я снова попытался прикоснуться к файлу в каталоге /megalith с привязкой, я все равно получил UID:GID 165536:16553 вместо 1000:1000. - person Cliff Friedel; 21.01.2017

Не совсем уверен, что это относится к вашему вопросу: https://github.com/lxc/lxc/issues/1622

Суть этой темы в том, что небезопасно/бессмысленно сопоставлять uid и/или gid хоста с корневым uid и/или gid контейнера. Если вы хотите сделать то, что вы описываете, вы должны сопоставить пользователя контейнера по умолчанию или создать нового пользователя контейнера и выполнять свои команды с этим пользователем контейнера. Затем вы можете сопоставить uid/gid хоста с uid/gid этого контейнера.

person mtalexan    schedule 06.12.2017