是否有更好的方法在Docker群集上运行命令或shell

比方说,我想编辑一个NGINX Docker服务的configuration文件,跨越3个节点复制。

目前我使用docker service ls列出docker service ls

然后获取详细信息,使用docker serivce ps servicename查找运行该服务容器的节点。

然后ssh到其中一个容器正在运行的节点。

最后, docker exec -it containername bash 。 然后我编辑configuration文件。

两个问题:

  1. 有没有更好的方法来做到这一点,而不是SSH运行一个容器的节点? 也许有一个群或服务命令这样做?
  2. 如果我要在一个容器上编辑该configuration文件,那么这个更改将被复制到群中的其他两个容器中?

这个练习的目的是在不closures服务的情况下编辑configuration。

你不应该在容器中执行它来改变它们的configuration,所以Docker在Swarm模式下没有创build一个简单的方法。 你可以使用经典的群体,以避免需要ssh到其他主机,但我仍然不build议这样做。

正确的方法是将您的configuration文件迁移到docker config条目中。 版本您的configuration名称。 然后,当您想要更新它时,您将创build一个具有所需更改的新版本,并滚动更新您的服务以使用该新configuration。

除非configuration是从外部源(如NFS)装入的,否则对一个容器中的一个configuration的更改将不会应用于其他节点上运行的其他容器。 如果该configuration作为其内部写时复制文件系统的一部分存储在本地容器中,则不会在其他容器中看到一个容器的更改。