我可以在不使用–privileged标志的情况下运行Docker-in-Docker
我想使用Docker-in-Docker,但是 – 特权提供了一揽子访问设备。 有没有办法使用卷和cap-add等组合来运行这个?
不幸的是,你必须使用--privileged
标志在Docker中运行Docker,你可以看看官方公告 ,他们声明这是--privileged
标志的许多用途之一。
基本上,您需要更多的访问主机系统设备才能运行--privileged
而不是在没有--privileged
情况下--privileged
。
是的,你可以在没有--privileged
标志的--privileged
运行--privileged
。 它涉及将dockersockets安装到容器上,如下所示:
docker run -it -v /var/run/docker.sock:/var/run/docker.sock \ -v $(which docker):/bin/docker \ alpine docker ps -a
这就是将docker socket和可执行文件安装到容器中,并在高山容器中运行docker ps -a
。 JérômePetazzoni创作了这个后代的示例,并且在--privileged
标志上做了很多工作,对--privileged
有这样的评价:
https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/
我一直在使用这种方法一段时间,它工作得很好。
这种方法的警告是事情与存储时髦。 最好使用数据卷容器或命名数据卷而不是挂载目录。 由于您使用的是主机上的docker套接字,因此您要在子容器中装入的任何目录都必须来自主机的上下文,而不是父容器。 它变得奇怪。 数据量容器的运气更好。