Docker - 从所有容器运行命令

时间:2016-04-30 15:03:31

标签: docker docker-compose

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

  • for nginx
  • for php
  • for mysql

我显然可以登录任何容器来运行命令。例如,我可以ssh到php容器来验证PHP版本或运行PHP脚本,但问题是 - 是否可以使用这样的配置,我可以从运行的所有容器运行命令,例如一个SSH容器?

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

php -v
nginx restart
mysql 

在登录所有服务的一个公共SSH之后。

有可能吗?我知道有exec命令,所以我可以在容器的每个命令名之前添加,但它不够灵活,不能使用,如果有更多的容器,它会越来越难。

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

1 个答案:

答案 0 :(得分:1)

你的问题是:

可以吗?

答案是:

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

  1. 使用SSH而不是Exec
  2. 绝对可以在每个容器中运行SSH守护程序并设置安全性,以便您可以在例如ssh命令中运行ssh命令。无密码模式

    参见例如Passwordless SSH login

    你的第二个限制是:

    1. 所有服务的一个常见SSH
    2. 现在这将是棘手的部分。你必须:

      • 在例如创建一个公共ssh服务器一个用于此目的的特殊容器或使用其中一个容器
      • 创建与容器之间或之间的通信
      • 确保ssh服务器知道哪个命令适用于哪个容器

      总而言之,与简单的bash或python脚本相比,这将是如此复杂,它可以对所有" no"中的exec命令执行相同的操作。恕我直言是一个比试图解决学术问题更好的答案;可能会有一些棘手/奇特的解决方案来做到这一点"。