Не удается удалить вложенный том btrfs внутри Docker

У меня есть раздел btrfs (смонтированный на / srv ) в моей хост-системе с вложенным томом ( старый ) . Я хочу управлять им из контейнера докеров (я запустил его с помощью -v / srv: / srv ).

Хотя я вполне могу создать его снимок, я не могу перечислить другие подобтомы и / или удалить их:

user@host:~$ docker exec -ti jenkins-slave bash
root@a5496f6bd14b:~# btrfs subvolume snapshot /srv/old /srv/new
Create a snapshot of '/srv/old' in '/srv/new'
root@a5496f6bd14b:~# ls /srv
new old
root@a5496f6bd14b:~# btrfs subvolume delete /srv/new
Delete subvolume (no-commit): '/srv/new'
ERROR: cannot delete '/srv/new': Operation not permitted
root@a5496f6bd14b:~# btrfs subvolume list /srv/new
ERROR: can't perform the search - Operation not permitted
root@a5496f6bd14b:~# ls /srv
new old

Хотя я все еще могу сделать это из хост-системы.

2
задан 20 May 2019 в 19:51
1 ответ

Похоже, что это поведение связано с настройкой конфигурации Docker.

Мне удалось заставить это работать, добавив CAP_SYS_ADMIN «Возможности Linux» во время выполнения Docker.

docker run -d -t --cap-add SYS_ADMIN -v /mnt.btrfs:/mnt.btrfs debbtrfs

CAP_SYS_ADMIN
Выполните ряд операций системного администрирования, включая quotactl (2), mount (2), umount (2), swapon (2), swapoff (2), sethostname (2) и setdomainname (2).

Существует целый ряд других «возможностей Linux», включая подробное описание CAP_SYS_ADMIN, которое можно найти на страницах руководства:

$ man 7 features

Какие из этих возможностей используются Docker по умолчанию, а какие добавление / удаление можно найти здесь, в разделе «Права выполнения и возможности Linux»:
https://docs.docker.com/engine/reference/run/

1
ответ дан 3 December 2019 в 12:29

Теги

Похожие вопросы