Я ищу способ получить доступ к rootfs контейнера с хоста. Хотя я мог бы просто использовать каталог, который был передан lxc.rootfs, в нем нет монтировок, которые есть у контейнера, поэтому вместо монтирований есть только пустые каталоги. Есть ли способ получить то же дерево файлов, что и корень контейнера?
Спасибо :)
Я использую следующий метод резервного копирования, используя rsync
:
Используя pid процесса инициализации контейнера, вы можете получить его, используя
# list all hosts:
lxc-ls -f -Fname,pid
# or get pid of one host:
lxc-ls -f -Fpid mycontainer
PID
-----
13323
Используя эту информацию, вы можете получить доступ к rootfs хоста с помощью файловой системы / proc.
cat /proc/13323/root/etc/hostname
# returns: "mycontainer"
Лучшее решение, которое мне удалось найти, - применить одни и те же крепления как на хосте, так и внутри контейнера (через lxc.mount [.entry]). Монтирования с хоста не передаются в контейнер, так как контейнер полностью изолирован от монтировок хоста.
В lxd место крепления хранилища на хосте может быть разным в зависимости от того, используете вы пакет snap или нет. Snap также использует другое пространство имен монтирования, поэтому вы должны получить к нему доступ через каталог mntns:
#Non snap location on host:
ls /var/lib/lxd/storage-pools/STORAGE_POOL_NAME/containers/CONTAINER_NAME/rootfs/
#Snap location on host:
ls /var/snap/lxd/common/mntns/var/snap/lxd/common/lxd/storage-pools/STORAGE_POOL_NAME/containers/CONTAINER_NAME/rootfs/