如何防止预构build的docker容器的用户无法访问该容器正在运行的实例中的shell? 我已经search了所有与这种情况相关的post,并且没有一个可行的解决scheme。 我试图阻止访问容器中的给定资源,为了这个查询,我们假设它在configuration文件中是一个序列号。 我build立在基于Ubuntu映像的java:7映像上。
要testing您的解决scheme,请执行以下操作:
创build并运行你的docker容器
导出你的容器
docker出口[容器名称] | gzip -c> mycontainer.tar.gz
在外部系统上导入您的容器
gzip -dc mycontainer.tar.gz | docker导入 – [容器名称]
运行容器
使用任何/所有以下方法将Shell装入正在运行的容器中:
docker exec -it [容器名] bash
docker附加[容器名称]
docker run -ti –entrypoint = / bin / bash [container name]
[容器名称]是您的容器的名称
bash,dash和sh都是有效的shell
特别是对于bash命令,我在.bashrc文件中添加了文件末尾的命令exit ,这样用户login后终于被踢出了,但是用户仍然可以使用sh命令。
如果您要保护的信息是序列号,那么encryption该信息是保护信息的唯一方法。 你可以select不同的方法来encryption秘密数据,确保你使用了一个强大的密钥。 您还可以让您的应用程序发送秘密数据到您的服务器,以确定其有效性,并根据您的服务器的答复应用程序可以继续工作或停止并显示消息。
简而言之,总是假定您的申请可以彻底彻底地解剖。 始终使用强密钥对所有秘密和重要数据进行encryption,因此破解密钥需要很长时间(假设encryptionalgorithm是公开可用的或众所周知的)。
即使你find一个方法来阻止访问,只会给人一种错误的安全感。