Docker – 从所有容器运行命令

我使用docker撰写为我的网站创build基本的环境(目前只在本地,所以我不在乎安全问题)。 目前我正在使用3个不同的容器“

  • 为nginx
  • 为PHP
  • 为MySQL

我显然可以login到任何容器来运行命令。 例如,我可以ssh到PHP容器来validationPHP版本或运行PHP脚本,但问题是 – 是否有可能有这样的configuration,我可以运行命令从所有容器运行例如一个SSH容器?

例如,我想运行这样的命令:

php -v nginx restart mysql 

在为所有服务login到一个普通的SSH之后。

有没有可能? 我知道有exec命令,所以我可以在容器的每个命令名之前添加它,但是它不够灵活以至于在使用更多的容器的情况下会越来越困难。

所以问题是 – 是否有可能,如果是的话,怎么可能实现呢?

你的问题是:

有没有可能?

答案是:

没有

这是由于你们两个组合的限制。 你的第一个限制是:

  1. 使用SSH而不是Exec

在每个容器中运行一个SSH守护程序是非常有可能的,并设置安全性,以便可以在无密码模式下运行ssh命令

请参阅无密码SSHlogin

你的第二个限制是:

  1. 一个通用的SSH服务

这现在是棘手的部分。 你必须:

  • 创build一个共同的SSH服务器在例如一个特殊的容器为此目的或使用其中一个容器
  • 创build与容器之间或之间的通信
  • 确保ssh服务器知道哪个容器是哪个命令

总而言之,与一个简单的bash或python脚本相比,这个脚本可以执行exec命令,所有的“no”都是更好的答案,而不是试图解决“可能会有一些棘手的/奇特的解决scheme“。