我想使用Docker-in-Docker,但是--privileged提供了对设备的全面访问.有没有办法使用卷和封面添加等的组合来运行它?
不幸的是,你必须使用--privileged
旗帜在Docker中运行Docker,你可以看看他们声明的官方公告,这是--privileged
旗帜的众多目的之一.
基本上,您需要更多访问主机系统设备来运行docker,而不是在没有运行时运行--privileged
.
是的,您可以在没有--privileged
标志的情况下在 docker 中运行 docker 。它涉及将 docker socket 安装到容器上,如下所示:
docker run -it -v /var/run/docker.sock:/var/run/docker.sock \
-v $(which docker):/bin/docker \
alpine docker ps -a
Run Code Online (Sandbox Code Playgroud)
这会将 docker socket 和可执行文件挂载到容器中并docker ps -a
在 alpine 容器中运行。Jérôme Petazzoni 是 dind 示例的作者并在--privileged
标志上做了很多工作,他对 docker 中的 docker有以下看法:
https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/
我已经使用这种方法有一段时间了,效果很好。
这种方法的警告是存储变得时髦。最好使用数据卷容器或命名数据卷,而不是安装目录。由于您使用来自主机的 docker 套接字,因此您要在子容器中安装的任何目录都需要来自主机的上下文,而不是父容器。它变得奇怪。我在数据量容器方面有更好的运气。
归档时间: |
|
查看次数: |
3066 次 |
最近记录: |