Назад | Перейти на главную страницу

Доступ к файловой системе контейнера LXC с хоста

Я ищу способ получить доступ к 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/