我有以下docker设置:
Ubuntu server
-> running Jenkins (started with docker-compose)
-> running a pipeline which starts a node-alpine image
-> which then calls a new docker-compose up (needed for tests)
如果我从节点高山容器中调用docker ps
,那么我会从ubuntu服务器上看到所有容器。我本来只希望看到新启动的容器。
这是否表明我的设置有缺陷?还是仅仅是docker的工作方式?
答案 0 :(得分:2)
这就是Docker工作的方式。没有容器的层次结构。
通常使用这种设置,您可以让协调器(如Jenkins)访问主机的Docker套接字。这意味着从Jenkins启动的容器与直接从主机启动的容器没有区别,这意味着Jenkins可以使用Docker进行的任何操作,而这些操作可以从主机完成。
请记住,访问Docker套接字意味着在主机上以root用户身份读取和修改任意文件,以及启动,停止,删除和替换其他容器。在此设置中,您可能会重新评估您真正需要多少最低级别的容器才能启动其他容器,因为这是一个重大的安全隐患。