问题描述
我启用了用户命名空间隔离,如 archwiki 和 docker documentation 中所述。
但是,当我尝试使用绑定安装时:
# this is fish shell
$ docker run --rm -it -v (pwd)/bmount/:/bmount alpine sh
我明白了:
docker: 来自守护进程的错误响应:无法创建垫片:OCI 运行时 创建失败:container_linux.go:380:启动容器进程 导致:process_linux.go:545:容器初始化导致: rootfs_linux.go:76:将“xxxx/bmount”挂载到“/bmount”的 rootfs 导致:stat xxxx/bmount:权限被拒绝:未知。
我设法让常规的 docker 卷正常工作。据我了解此设置,鉴于容器对文件夹具有权限,绑定安装应该可以正常工作,对吗?
以下是更多详细信息:
我创建了一个 dockremap
用户和组,两者的 UID/GID 均为 200000
这是/etc/subuid
和/etc/subgid
dockremap:200000:65536
dockremap:200000:65536
并且docker配置为使用用户命名空间隔离,这里是/etc/docker/daemon.json
{ "userns-remap": "dockremap" }
我确保我试图绑定 mount 的 bmount 文件夹被 chown 到 dockremap
drwxr-xr-x 2 码头地图码头地图 4,0K 24 juin 13:08 bmount
docker info 给出了这个:
Client: Context: default Debug Mode: false Plugins: app: Docker App (Docker Inc.,v0.9.1-beta3) buildx: Build with BuildKit (Docker Inc.,v0.5.1-tp-docker)
服务器:容器:0 运行:0 暂停:0 停止:0 图像:2
服务器版本:20.10.7 存储驱动程序:overlay2 后备文件系统:
extfs 支持 d_type: true Native Overlay Diff: false
userxattr: false 日志驱动程序: json-file Cgroup 驱动程序: systemd
Cgroup 版本:2 插件:卷:本地网络:桥接主机
ipvlan macvlan null 覆盖日志:awslogs fluentd gcplogs gelf
journald json 文件本地 logentries splunk syslog Swarm:不活动
运行时:io.containerd.runtime.v1.linux runc io.containerd.runc.v2
默认运行时:runc Init Binary:docker-init containerd 版本:
36cc874494a56a253cd181a1a685b44b58a2e34a.m runc 版本:
b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7 初始化版本:de40ad0
安全选项:seccomp 配置文件:默认用户 cgroupns
内核版本:5.12.11-arch1-1 操作系统:Arch Linux OSType:
linux 架构:x86_64 cpu:2 总内存:3.735GiB 名称:
评论编号:
AT7Q:T3HO:HBFF:H7AM:XABE:KY4B:AQ2H:POBZ:YUE3:XGOT:4ROB:SDUX Docker
根目录:/var/lib/docker/200000.200000 调试模式:false 注册表:
https://index.docker.io/v1/ 标签:实验:假不安全
注册表:
127.0.0.0/8 已启用实时还原:false
$ uname -a
Linux CRIQUET 5.12.11-arch1-1 #1 SMP PREEMPT 星期三,2021 年 6 月 16 日 15:25:28 +0000 x86_64 GNU/Linux
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)