我正在试验Docker,并了解有关卷使用的概念。我有一个tomcat应用程序,它将文件写入特定的卷。
我写了一个ENTRYPOINT
为“dosomething.sh
”的Dockerfile
我的入口点脚本问题是..
在“dosomething.sh
”中,我可能有一个恶意代码来删除该卷上的所有文件!
有没有一种方法可以防止这种情况发生,特别是因为我正计划与我的开发团队共享此dockerfile和脚本,因此对于生产角色必须采取的防护措施似乎令人恐惧!
一种想法是对于所有具有卷的容器完全不使用“ENTRYPOINT
”。
经验丰富的人,请为您提供建议。
最佳答案
如果您使用data volume container隔离卷,则此类容器将永远不会运行:它们仅是创建的(docker create
)。
这意味着您需要将该数据卷容器安装到其他容器中,以便它们访问该卷。
这减轻了一点危险的入口点:简单的docker run将无法访问任何内容,因为未设置-v
挂载量选项。
另一种方法是,至少将脚本声明为CMD
,而不是ENTRYPOINT
(对于ENTRYPOINT
,将其声明为[ "/bin/sh", "-c" ]
。这样,可以通过替代命令(作为参数传递,覆盖CMD
)更轻松地进行docker运行,而不必始终仅因为它是ENTRYPOINT
而执行脚本。
关于security - 围绕ENTRYPOINT的Docker安全性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34202257/