繁体   English   中英

如何在Docker中的Docker中以非root用户身份运行Docker命令?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM