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

时间:2016-07-08 21:00:17

标签: docker

我有以下Dockerfile:

@Repository
public class BusinessDaoImpl implements BusinessDao
{
@Autowired
@Qualifier(value="sessionFactory")
SessionFactory sessionFactory;

在此图片中,我正在创建一个名为demo的用户,然后将其添加到名为docker的组中。这几乎就是如何设置完整的环境,以便非root用户/非sudo用户可以发出docker命令。但是,它对我不起作用。我错过了什么?我尝试将用户和组(通过用户和组ID)映射到主机系统上的用户,但它仍然无法正常工作。我在Docker for Mac Beta(1.12.0-rc3-beta18)中运行它。

1 个答案:

答案 0 :(得分:0)

这是问题评论的延伸。

因此OP的用例是通过使用docker within docker架构来调查持续集成环境,或者如果您愿意,可以采用方法。

来自docker的nested containers官方博客帖子,然而,这可以通过jpetazzo进一步解释,jpetazzo是嵌套容器概念的先驱贡献者;为了使架构正常工作,可能需要大量的hackie工作,因为嵌套架构并不完美,主要是由于以下缺点;

示例:

1 - 安全档案

  

启动容器时,“内部Docker”可能会尝试应用   安全配置文件会使“外部Docker”发生冲突或混淆。

2 - 存储

  

第二个问题与存储驱动程序有关。当您运行Docker时   Docker,外部Docker运行在普通文件系统之上(EXT4,   BTRFS,你有什么)但内部Docker运行在一个顶部   写时复制系统(AUFS,BTRFS,Device Mapper等,取决于   外部Docker设置使用的是什么)。有很多种组合   这是行不通的。   2   3 - 难以在子容器中重用图像

     

那么构建缓存呢?那个人也会变得非常棘手。   人们常常问我:“我正在运行Docker-in-Docker;我该怎么用?   图像位于我的主机上,而不是再次拉动我的主机   内在的Docker?“

Q)此问题的可能解决方案?

答:我想OP之所以试验嵌套容器架构,是因为他可以使用容器作为某种形式的root,然后通过docker命令编排其子容器?

如果这是想法,那么这仍然可以通过标准的非嵌套方式实现。也就是说,不是在流中发送docker命令,而是将其发送回主机实例,让主机实例为您执行根容器的命令。例;使用docker REST api从容器发送docker命令。