[英]How to run Docker commands as non-root user in Docker in Docker?
我有以下Dockerfile:
FROM docker
RUN addgroup docker && \
adduser -DH demo && \
addgroup demo docker
CMD /bin/sh
在这张图片中,我正在创建一个名为demo的用户,然后将其添加到名为docker的组中。 这几乎就是如何设置完整的环境,以便非root用户/非sudo用户可以发出docker命令。 但是,它对我不起作用。 我错过了什么? 我尝试将用户和组(通过用户和组ID)映射到主机系统上的用户,但它仍然无法正常工作。 我在Docker for Mac Beta(1.12.0-rc3-beta18)中运行它。
这是问题评论的扩展。
因此,OP的用例是通过docker within docker
架构中使用docker within docker
来调查持续集成环境,或者如果您愿意,可以使用方法。
从docker的官方博客发布嵌套容器 , 是的,这可以做到,正如jpetazzo进一步解释的那样,嵌套容器概念的先驱贡献者; 为了使架构正常工作,可能需要大量的hackie工作,因为嵌套架构并不完美,主要是由于以下缺点;
例:
1 - 安全配置文件
启动容器时,“内部Docker”可能会尝试应用与“外部Docker”冲突或混淆的安全配置文件。
2 - 存储
第二个问题与存储驱动程序相关联。 在Docker中运行Docker时,外部Docker运行在普通文件系统(EXT4,BTRFS,你有什么)之上,但内部Docker运行在写时复制系统(AUFS,BTRFS,Device Mapper等)之上。 。,取决于外部Docker设置使用的内容)。 有许多组合不起作用。 2 3 - 很难在子容器中重复使用图像
那么构建缓存呢? 那个人也会变得非常棘手。 人们常常问我:“我正在运行Docker-in-Docker; 我如何使用位于主机上的图像,而不是在内部Docker中再次拉动所有图像?“
问)这个问题的可能解决方案?
答:我想OP之所以试验嵌套容器架构,是因为他可以使用容器,作为某种形式的root,然后通过docker命令编排其子容器?
如果这是想法,那么这仍然可以通过标准的非嵌套方式实现。 也就是说,不是在流中发送docker命令,而是将其发送回主机实例,让主机实例为您执行根容器的命令。 例; 使用docker REST api从容器发送docker命令。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.