首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用用户命名空间共享docker套接字

使用用户命名空间共享docker套接字
EN

Stack Overflow用户
提问于 2017-06-26 23:16:45
回答 1查看 1.1K关注 0票数 4

在使用用户命名空间时,是否可以在docker容器中使用从主机挂载的docker套接字?

我有以下配置:

/etc/subuid

代码语言:javascript
复制
 user:100000:65536

/etc/subgid

代码语言:javascript
复制
 user:100000:65536

/etc/docker/daemon.json

代码语言:javascript
复制
{                              
  "userns-remap": "ns-user" 
}

我已经创建了UID为100000的用户ns-user和GID为100000的组ns-user。附加性我已经将ns-user添加到组docker中。当我在主机上以ns-user的身份登录时,我可以通过套接字使用docker。

问题是,当我在挂载docker套接字的情况下运行容器时,套接字上的权限被拒绝。docker容器内的套接字权限:

代码语言:javascript
复制
srw-rw---- 1 nobody nogroup 0 Jun 26 15:00 /var/run/docker.sock

编辑1:

为了澄清,我认为容器内的根用户(uid 100000)映射到主机上的ns-user (uid 0),该主机有权访问docker socket。但事实上,我的许可被拒绝了。为什么?

我不想使用--userns=host参数。

EN

回答 1

Stack Overflow用户

发布于 2018-12-10 01:26:37

您可以通过使用socat为名称空间用户创建具有正确权限的套接字来完成此操作:

代码语言:javascript
复制
sudo socat UNIX-LISTEN:/var/run/docker-userns.sock,user=1000,group=1000,mode=0600,fork UNIX-CLIENT:/var/run/docker.sock &

在启动容器之前,您需要编写一个脚本来启动它。如果在docker之后套接字出现,它仍然可以工作,您的容器可能只是重新启动几次,直到它们能够连接到用户套接字。

我一直在寻找比这个更具可配置性的东西。可以使用python脚本,使用前面提到的here中的pty模块。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44762963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档