从docker容器中执行主机命令

时间:2015-07-30 10:10:44

标签: security docker

我正在寻找一种方法让用户能够在主机上执行一组有限的命令,同时只能从容器/浏览器访问它。目标是防止对主机的SSH需要偶尔运行命令,如make startmake stop等。这些make命令只执行一系列{docker-compose命令1}}命令,有时在开发中需要。

我能想到的两种可能方式是:

  • 通过浏览器内的cloud9终端(我们已经在使用它)。默认情况下,此终端当然只访问容器本身。
  • 通过自定义迷你webapp(例如node.js / express),其中包含映射到命令的按钮。如果在主机上运行,​​这很容易做,但我希望将所有代码保存为容器。

3 个答案:

答案 0 :(得分:4)

虽然这可能不是最佳做法,但仍可以从容器内控制主机。如果您正在运行docker-compose命令,则可以使用ubuntu上的Select * from (select a.*, row_number () over (partition by id order by city desc)rn From tablename a ) b where rn=1 绑定装载docker socket。 如果您想使用其他系统工具,则必须使用-v /var/run/docker.sock:/var/run/docker.sock绑定挂载所有必需的卷,当您想要使用使用-v文件的系统箱时,这会变得非常棘手和乏味。

如果您需要使用/lib.*.so命令,请不要忘记在运行容器时添加sudo标志

答案 1 :(得分:-1)

容器不应该爆发并访问主机。 Docker(除其他外)是进程隔离。但是,当您进行设置时,您可能会发现在主机上执行某些代码的各种技巧。

答案 2 :(得分:-1)

这种方法将违背process/resources encapsulation的docker概念。使用docker,您可以完全从主机和彼此封装进程(除非您链接容器/卷)。在docker容器中,由于process namespaces,您无法在主机上看到任何正在运行的进程。当您现在想要在容器内执行主机上的进程时,这些进程将违反docker方法。