背景
我有一个容器,它运行着很多东西,包括暴露给其他开发人员的前端。
用户将要把他们的一些shell / python脚本上传到要运行的容器中。
为了保持我的容器正常工作,我的计划是将脚本发送到同级容器,然后该兄弟容器将运行它们并将响应发送给我。用户的脚本应该能够下载外部软件包等。
然后我要对兄弟容器进行“清理”
问题
一旦运行完用户脚本,同级容器是否可以从其源映像重新启动?这样,用户可以获得一个始终干净的容器来运行其脚本。
注意
如果我用这种解决方案完全把错误的树缠住了,请告诉我。我正在尝试一些奇怪的功能,并且可能会从错误的角度来解决这个问题。
编辑1(其他方法以及为什么我不喜欢它们)
我想到的两种选择是在容器上放置前端运行容器。或者让同级容器在其上运行docker容器。但是这两个解决方案遇到了Docker-in-docker的难题。另一种解决方案可能是提高前端容器的权限,直到它可以动态地使同级容器运行脚本。但是,我担心这可能导致给前端容器不必要的高权限。
编辑2(我发现的有关重新启动容器的所有文档)
我知道autorestart上的文档,但是我认为这不会清除容器中的物品。例如,如果文件已下载到文件上。
答案 0 :(得分:1)
我的回答对安全性有严重影响。
如果将Docker套接字从主机映射到主容器,则可以从主容器控制同级容器。
docker run -v /var/run/docker.sock:/var/run/docker.sock ...
现在,您可以从主容器内部完全控制docker引擎。您可以start
,stop
等兄弟姐妹容器,并生成新的(干净的)兄弟姐妹。
但是请记住,这实际上是在授予主机根权限给您的主容器。