📦 Как получить доступ к устройствам хранения данных с помощью привилегированного контейнера |

📦 Как получить доступ к устройствам хранения данных с помощью привилегированного контейнера

Обход запретов

Избегайте использования привилегированных контейнеров в продакшен средах из-за ограниченной изоляции между контейнером и хостом, поскольку привилегированные контейнеры запускаются в хостсистеме от имени пользователя root, что создает риски для безопасности, но обеспечивает прямой доступ к хостустройствам. Это делает их подходящими для сценариев, в которых требуется быстрый доступ к данным из физического хранилища, их резервное копирование или восстановление.

🐳 Что такое Docker без root (rootless)?

Конфигурация Proxmox

Отобразим доступное хранилище.

sudo pvesm status
Name                  Type     Status     Total (KiB)      Used (KiB) Available (KiB)        %
local                  dir     active       249175008         6310156       230134692    2.53%
local-lvm          lvmthin     active       681816064         5181802       676634261    0.76%
local-nvme             dir     active       653463208            2104       620193548    0.00%
local-nvme-lvm     lvmthin     active      1262592000               0      1262592000    0.00%

Отобразим доступные шаблоны контейнеров.

sudo pveam available --section system
system          almalinux-10-default_20250930_amd64.tar.xz
system          almalinux-9-default_20240911_amd64.tar.xz
system          alpine-3.22-default_20250617_amd64.tar.xz
system          centos-9-stream-default_20240828_amd64.tar.xz
system          debian-12-standard_12.12-1_amd64.tar.zst
system          debian-13-standard_13.1-2_amd64.tar.zst
system          devuan-5.0-standard_5.0_amd64.tar.gz
system          fedora-42-default_20250428_amd64.tar.xz
system          gentoo-current-openrc_20250508_amd64.tar.xz
system          openeuler-25.03-default_20250507_amd64.tar.xz
system          opensuse-15.6-default_20240910_amd64.tar.xz
system          rockylinux-10-default_20251001_amd64.tar.xz
system          rockylinux-9-default_20240912_amd64.tar.xz
system          ubuntu-22.04-standard_22.04-1_amd64.tar.zst
system          ubuntu-24.04-standard_24.04-2_amd64.tar.zst
system          ubuntu-25.04-standard_25.04-1.1_amd64.tar.zst

Загрузите шаблон контейнера.

sudo pveam download local debian-13-standard_13.1-2_amd64.tar.zst
downloading http://download.proxmox.com/images/system/debian-13-standard_13.1-2_amd64.tar.zst to /var/lib/vz/template/cache/debian-13-standard_13.1-2_amd64.tar.zst
calculating checksum of existing file...OK, got correct file already, no need to download

Перечислим загруженные шаблоны контейнеров.

sudo pveam list local
NAME                                                         SIZE
local:vztmpl/debian-13-standard_13.1-2_amd64.tar.zst         123.70MB

Отобразим доступные сетевые мосты.

sudo pvesh get /nodes/$(hostname)/network --type bridge --output-format yaml
---
- active: 1
address: 192.168.65.30
autostart: 1
bridge_fd: '0'
bridge_ports: nic0
bridge_stp: off
cidr: 192.168.65.30/22
families:
- inet
gateway: 192.168.64.1
iface: vmbr0
method: static
method6: manual
netmask: '22'
priority: 4
type: bridge

Получим следующий доступный идентификатор контейнера.

sudo pvesh get /cluster/nextid
105

Создадим привилегированный контейнер.

sudo pct create 105 local:vztmpl/debian-13-standard_13.1-2_amd64.tar.zst \
--hostname ct-debian13-privileged \
--onboot 1 \
--password c0nv3rg3nce37 \
--memory 2048 \
--cores 2 \
--rootfs local-lvm:8 \
--net0 name=eth0,bridge=vmbr0,ip=dhcp \
--unprivileged 0 \
--features nesting=1
Logical volume "vm-105-disk-0" created.
Logical volume pve/vm-105-disk-0 changed.
Creating filesystem with 2097152 4k blocks and 524288 inodes
Filesystem UUID: 493510e8-09eb-4ee0-bca9-5ae2681d59f7
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
extracting archive '/var/lib/vz/template/cache/debian-13-standard_13.1-2_amd64.tar.zst'
Total bytes read: 551505920 (526MiB, 512MiB/s)
Detected container architecture: amd64
Creating SSH host key 'ssh_host_ecdsa_key' - this may take some time ...
done: SHA256:sJl/i6fJR4gxnTPyyJlu+XJhGQD8bpUkI/cMmdu9jis root@ct-debian13-privileged
Creating SSH host key 'ssh_host_ed25519_key' - this may take some time ...
done: SHA256:INQN0ZzYMqU7TLWtuhfHTfdTFRCgS+DghsbZ4pI2IhQ root@ct-debian13-privileged
Creating SSH host key 'ssh_host_rsa_key' - this may take some time ...
done: SHA256:cKVgOyJ4R9p8fddPbihKIqx4kzG7waWyi5dnG4/XxWA root@ct-debian13-privileged

Определим состояние контейнера.

sudo pct status 105
status: stopped

Запустим контейнер.

sudo pct start 105
sudo pct status 105
status: running

Проверьте доступ к консоли.

sudo pct console 105
Connected to tty 1
Type <ctrl+a q=""> to exit the console, <ctrl+a ctrl+a=""> to enter Ctrl+a itself
Debian GNU/Linux 13 ct-debian13-privileged tty1
ct-debian13-privileged login: </ctrl+a></ctrl+a>

Проверьте конфигурацию контейнера.

sudo pct config 105
arch: amd64
cores: 2
features: nesting=1
hostname: ct-debian13-privileged
memory: 2048
net0: name=eth0,bridge=vmbr0,hwaddr=BC:24:11:E9:5D:53,ip=dhcp,type=veth
onboot: 1
ostype: debian
rootfs: local-lvm:vm-105-disk-0,size=8G
swap: 512

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

lsblk -o NAME,UUID /dev/sdb
NAME   UUID
sdb
└─sdb1 e4c29014-145b-4c8d-bcc8-a5af6d91fb21

Доступ к устройствам хранения данных

Cуществует два способа доступа к основным устройствам хранения данных из привилегированного контейнера: сквозной доступ к устройству и точки монтирования.

Сквозной доступ к устройству предоставляет доступ к блочному устройству raw, предоставляя контейнеру полный контроль над подключением и операциями с файловой системой.

Точки подключения автоматически подключают устройство при запуске контейнера, что более удобно для постоянного доступа.

Сквозной доступ к устройству

Создадим сквозной доступ к устройству.

sudo pct set 105 -dev0 /dev/sdb1

Проверьте конфигурацию контейнера, чтобы убедиться в проходимости устройства.

sudo pct config 105
arch: amd64
cores: 2
dev0: /dev/sdb1
features: nesting=1
hostname: ct-debian13-privileged
memory: 2048
net0: name=eth0,bridge=vmbr0,hwaddr=BC:24:11:E9:5D:53,ip=dhcp,type=veth
onboot: 1
ostype: debian
rootfs: local-lvm:vm-105-disk-0,size=8G
swap: 512

Убедитесь, что сквозной доступ к устройству работает должным образом.

sudo pct exec 105 --- mount /dev/sdb1 /mnt
sudo pct exec 105 -- df -h /mnt
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdb1       1.8T  109G  1.6T   7% /mnt

Когда закончите, отключите устройство.

sudo pct exec 105 -- umount /dev/sdb1

Удалите сквозной доступ к устройству.

sudo pct set 105 --delete dev0

Перезагрузите контейнер, чтобы применить изменения конфигурации.

sudo pct reboot 105

Точка подключения устройства

Создайте точку подключения устройства, используя путь к устройству на основе UUID для надежной идентификации.

sudo pct set 105 -mp0 /dev/disk/by-uuid/e4c29014-145b-4c8d-bcc8-a5af6d91fb21,mp=/mnt/e4c29014-145b-4c8d-bcc8-a5af6d91fb21,backup=0

Проверьте конфигурацию контейнера, чтобы проверить точку монтирования.

sudo pct config 105
arch: amd64
cores: 2
features: nesting=1
hostname: ct-debian13-privileged
memory: 2048
mp0: /dev/disk/by-uuid/e4c29014-145b-4c8d-bcc8-a5af6d91fb21,mp=/mnt/e4c29014-145b-4c8d-bcc8-a5af6d91fb21,backup=0
net0: name=eth0,bridge=vmbr0,hwaddr=BC:24:11:E9:5D:53,ip=dhcp,type=veth
onboot: 1
ostype: debian
rootfs: local-lvm:vm-105-disk-0,size=8G
swap: 512

Убедитесь, что точка монтирования работает должным образом.

sudo pct exec 105 -- ls -lh /mnt/e4c29014-145b-4c8d-bcc8-a5af6d91fb21/
total 20K
drwx------ 5  988  988 4.0K Jan  4 00:28 aptly
drwx------ 2 root root  16K Jan  3 21:06 lost+found

Удалите точку монтирования.

sudo pct set 105 --delete mp0

Перезагрузите контейнер, чтобы применить изменения конфигурации.

sudo pct reboot 105

Восстановление системы

Остановите и уничтожьте контейнер, когда он больше не понадобится.

sudo pct stop 105
sudo pct destroy 105

см. также:

 

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий