Security 我可以在Docker中运行Docker而不使用--privileged标志吗

Security 我可以在Docker中运行Docker而不使用--privileged标志吗,security,docker,Security,Docker,但是,我想使用特权提供对设备的全面访问。是否有一种方法可以使用卷和cap add等组合来运行此操作?不幸的是,您必须使用--privileged标志在Docker中运行Docker,您可以查看它们在何处声明这是--privileged标志的众多用途之一 基本上,运行docker所需的主机系统设备访问权限比在没有--privileged的情况下要多。是的,您可以在docker中运行docker,而不使用--privileged标志。它包括将docker插座安装到容器上,如下所示: docke

但是,我想使用特权提供对设备的全面访问。是否有一种方法可以使用卷和cap add等组合来运行此操作?

不幸的是,您必须使用
--privileged
标志在Docker中运行Docker,您可以查看它们在何处声明这是
--privileged
标志的众多用途之一


基本上,运行docker所需的主机系统设备访问权限比在没有
--privileged

的情况下要多。是的,您可以在docker中运行docker,而不使用
--privileged
标志。它包括将docker插座安装到容器上,如下所示:

   docker run -it -v /var/run/docker.sock:/var/run/docker.sock \
               -v $(which docker):/bin/docker \
               alpine docker ps -a
这将把docker套接字和可执行文件装载到容器中,并在alpine容器中运行
docker ps-a
。杰罗姆·佩塔佐尼(Jérôme Petazzoni)编写了dind示例,并在
--privileged
标志上做了大量工作,他对docker中的docker说:

我使用这种方法已经有一段时间了,效果非常好


这种方法需要注意的是,存储会让事情变得很糟糕。最好使用数据卷容器或命名数据卷,而不是装入目录。由于您使用的是来自主机的docker套接字,因此要在子容器中装载的任何目录都需要来自主机的上下文,而不是父容器。这很奇怪。我在使用数据卷容器时运气更好。

是的。docker hub中有dind无根版本的docker image


谢谢你的回答,这看起来也不会很快改变-docker中的docker特别需要什么设备?有一个
--device
选项,它的意思是一种入侵性较小的特权选项。不,它不应该,给容器访问主机docker套接字并不能真正解决问题。实际上,这不是dind(docker in docker)的意思。您只是在docker容器中运行docker客户端,而不是在docker容器(dind)中运行docker服务器。此外,通过公开主机套接字,您实际上提供了更多的攻击面,而不仅仅是将
--privileged
标记添加到dind容器并让它拥有自己的套接字。