У меня одинаковые ОС (Ubuntu 16.04), работающие на 2 хостах, с одинаковыми обновлениями ОС.

У меня также есть идентичная служба LxD, установленная (через sudo apt-get install lxd) и настроенная (через sudo lxd init) на обоих хостах.

Теперь, по причинам экономии места, переносимости / непрерывности работы (поскольку эти 2 хоста находятся в разных физических местах, за своими собственными брандмауэрами, которые я не контролирую), я подумал, почему бы не установить все мои образы и контейнеры LxD на внешний диск, который я мог бы подключить к одному или другому хосту, взаимозаменяемо.

Для этого я установил нужные изображения и настроил нужные контейнеры на хосте A и скопировал /var/lib/lxd , /var/log/lxd и /var/cache/lxd (и их содержимое) в внешний диск.

Когда я подключил внешний диск к хосту B, я действительно мог видеть свои списки контейнеров с изображениями и (остановленными) с хоста A очень хорошо. Я мог бы даже запустить новые контейнеры на хосте B из оригинальных образов хоста A.

Но когда на Host BI попытался запустить контейнер, foo , изначально запущенный и остановленный на узле A, я получил следующую ошибку:

$ lxc start foo
error: Error calling 'lxd forkstart foo /var/lib/lxd/containers /var/log/lxd/foo/lxc.conf': err='exit status 1'
  lxc 20161217084040.956 ERROR lxc_start - start.c:lxc_spawn:1162 - failed to set up id mapping
  lxc 20161217084041.013 ERROR lxc_start - start.c:__lxc_start:1354 - failed to spawn 'foo'
  lxc 20161217084041.564 ERROR lxc_conf - conf.c:run_buffer:347 - Script exited with status 1
  lxc 20161217084041.564 ERROR lxc_start - start.c:lxc_fini:555 - failed to run post-stop hooks for container 'foo'.
  lxc 20161217084041.566 ERROR lxc_conf - conf.c:userns_exec_1:4334 - Error setting up child mappings
  lxc 20161217084041.566 ERROR lxc_cgfsng - cgroups/cgfsng.c:recursive_destroy:983 - Error destroying /sys/fs/cgroup/systemd//lxc/foo
  lxc 20161217084041.568 ERROR lxc_conf - conf.c:userns_exec_1:4334 - Error setting up child mappings
  lxc 20161217084041.568 ERROR lxc_cgfsng - cgroups/cgfsng.c:recursive_destroy:983 - Error destroying /sys/fs/cgroup/pids//lxc/foo
  lxc 20161217084041.569 ERROR lxc_conf - conf.c:userns_exec_1:4334 - Error setting up child mappings
  lxc 20161217084041.569 ERROR lxc_cgfsng - cgroups/cgfsng.c:recursive_destroy:983 - Error destroying /sys/fs/cgroup/net_cls//lxc/foo
  lxc 20161217084041.571 ERROR lxc_conf - conf.c:userns_exec_1:4334 - Error setting up child mappings
  lxc 20161217084041.571 ERROR lxc_cgfsng - cgroups/cgfsng.c:recursive_destroy:983 - Error destroying /sys/fs/cgroup/hugetlb//lxc/foo
  lxc 20161217084041.573 ERROR lxc_conf - conf.c:userns_exec_1:4334 - Error setting up child mappings
  lxc 20161217084041.573 ERROR lxc_cgfsng - cgroups/cgfsng.c:recursive_destroy:983 - Error destroying /sys/fs/cgroup/cpu//lxc/foo
  lxc 20161217084041.575 ERROR lxc_conf - conf.c:userns_exec_1:4334 - Error setting up child mappings
  lxc 20161217084041.575 ERROR lxc_cgfsng - cgroups/cgfsng.c:recursive_destroy:983 - Error destroying /sys/fs/cgroup/freezer//lxc/foo
  lxc 20161217084041.576 ERROR lxc_conf - conf.c:userns_exec_1:4334 - Error setting up child mappings
  lxc 20161217084041.576 ERROR lxc_cgfsng - cgroups/cgfsng.c:recursive_destroy:983 - Error destroying /sys/fs/cgroup/cpuset//lxc/foo
  lxc 20161217084041.578 ERROR lxc_conf - conf.c:userns_exec_1:4334 - Error setting up child mappings
  lxc 20161217084041.578 ERROR lxc_cgfsng - cgroups/cgfsng.c:recursive_destroy:983 - Error destroying /sys/fs/cgroup/blkio//lxc/foo
  lxc 20161217084041.580 ERROR lxc_conf - conf.c:userns_exec_1:4334 - Error setting up child mappings
  lxc 20161217084041.580 ERROR lxc_cgfsng - cgroups/cgfsng.c:recursive_destroy:983 - Error destroying /sys/fs/cgroup/devices//lxc/foo
  lxc 20161217084041.581 ERROR lxc_conf - conf.c:userns_exec_1:4334 - Error setting up child mappings
  lxc 20161217084041.581 ERROR lxc_cgfsng - cgroups/cgfsng.c:recursive_destroy:983 - Error destroying /sys/fs/cgroup/memory//lxc/foo
  lxc 20161217084041.583 ERROR lxc_conf - conf.c:userns_exec_1:4334 - Error setting up child mappings
  lxc 20161217084041.583 ERROR lxc_cgfsng - cgroups/cgfsng.c:recursive_destroy:983 - Error destroying /sys/fs/cgroup/perf_event//lxc/foo

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

Вопросы:

Является ли некоторая специфичная для аппаратного обеспечения информация о хосте, на котором первоначально был запущен контейнер, закодированной в сериализованной копии контейнера на диске (например, ОЗУ, MAC-адрес), что делает невозможным запуск контейнера на другом хосте с немного другой спецификацией оборудования ?

Что еще я могу сделать для моего варианта использования портативных контейнеров через внешний жесткий диск?

1 ответ1

1

Числа для различных имен входа в /etc/subuid и /etc/subgid на моих 2 хостах не совпадали , поэтому сбой во время выполнения при запуске контейнера на хосте, на котором он изначально не был создан (или запущен).

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

Примечание для разработчиков LxD: более высокое, более удобное для пользователя сообщение об ошибке от LxD с подсказками о возможных причинах было бы желанным дополнением к этому БОЛЬШОМУ программному обеспечению!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .