TGViewer
Записки IT специалиста Записки IT специалиста @interface31 · 8.99K subscribers
Post #3925 2.9K
​​Тонкие настройки LXC. Монтирование

Еще одна часто встречающаяся задача – обмен файлами между контейнером и хостом, особенно когда надо передать большие объемы данных и сеть для этого не очень подходит.

Для этого можно воспользоваться монтированием, попробуем смонтировать файл с хоста в контейнер, это может быть архив с дистрибутивом некоторого ПО. Для этого в конфигурационный файл /etc/pve/lxc/nnn.conf (где nnn – ID контейнера) добавим:

lxc.mount.entry = /home/file1.tgz home/file1.tgz none bind,optional,create=file


Обратите внимание, что путь к файлу на хосте мы указываем от корня, а в контейнере без указания начального слеша.

Далее коротко пройдемся по опциям:

▫️none – тип файловой системы, в данном случае мы монтируем не ФС, а файл (аналогично и директориями).

▫️ bind – указывает на связывание, мы явно связываем файл в контейнере с файлом на хосте.

▫️ optional - необязательность монтирования, если файл на хосте отсутствует монтирование произведено не будет, блокировки загрузки контейнера не произойдет.

▫️ create – создать объект указанного типа (файл) в контейнере при его отсутствии.

Теперь примонтируем директорию, это также просто:

lxc.mount.entry = /home/dir1 home none bind,optional ,create=dir


А вот задача посложнее – смонтируем LVM раздел с файловой системой ext4:

lxc.mount.entry = /dev/mapper/ lvm-vg-myvolume1 home/myvolume1 ext4 defaults 0 0


Здесь мы вместо none указываем явно тип файловой системы и параметры монтирования также как мы это делаем в fstab.

А если нам нужно монтировать раздел блочного устройства, допустим у нас есть /dev/sda3 с типом файловой системы XFS. Здесь нам потребуется уже две строки:

lxc.mount.entry = /dev/sda3 home/volume3 xfs defaults 0 0
lxc.cgroup.devices.allow = b 8:3 rwm


Вторая строка разрешает доступ к устройству, где b 8:3 rwm означает:

▫️ b – блочное устройство

▫️ 8:3 – номер устройства, можно узнать командной ls -l /dev/sda3

▫️ rwm – набор прав: чтение, запись, создание специальных файлов устройства.

А теперь к несколько неожиданному, как мы помним в Linux все есть файл и если мы хотим поднять в контейнере сервис, который создает собственные сетевые устройства, скажем OpenVPN или WireGuard, то мы должны предоставить этим устройствам связь с внешним миром через хост. А для этого снова используем монтирование:

lxc.mount.entry: /dev/net dev/net none bind,create=dir
lxc.cgroup2.devices.allow: c 10:200 rwm


Мы смонтировали при помощи связывания специальную директорию /dev/net хоста в контейнер и выдали на нее права второй строкой. Единственное отличие с вместо b так как устройство у нас не блочное, а символьное.

Теперь мы можем создавать в контейнере собственные сетевые интерфейсы и они получат доступ во внешний мир через сетевую систему хоста.
  • 👍 49
  • 🔥 5
  • 🤷‍♂ 3
More from @interface31
  1. Oct 4, 2026Горе от ума или причины упадка FreeBSD Каждый раз, когда заходит речь про FreeBSD, обязате…
  2. Oct 4, 2026Работаем с жесткими и символическими ссылками в Windows Жесткие и символические ссылки дав…
  3. Oct 4, 2026Post #6837
  4. Oct 3, 2026Как узнать все смонтированные файловые системы? Раньше можно было сказать: загляните в /et…
  5. Oct 3, 2026Автоматический перезапуск Aspia в Docker Не так давно мы рассказывали, как запустить попул…
  6. Oct 3, 2026Post #6834
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →