假设我想编辑一个跨3个节点复制的NGINX Docker服务的配置文件。
目前,我使用docker service ls
列出服务。
然后使用docker serivce ps servicename
获取详细信息以查找运行该服务容器的节点。
然后ssh到其中一个容器正在运行的节点。
最后,docker exec -it containername bash
。然后我编辑配置文件。
两个问题:
本练习的目的是在不关闭服务的情况下编辑配置。
答案 0 :(得分:0)
您不应该执行容器来更改其配置,因此docker还没有创建一种在Swarm模式下执行此操作的简单方法。您可以使用经典swarm来避免需要ssh到其他主机,但我仍然不建议这样做。
执行此操作的正确方法是将配置文件迁移到docker config
条目。版本化您的配置名称。然后,当您想要更新它时,可以创建具有所需更改的新版本,并对服务进行滚动更新以使用该新配置。
除非从NFS等外部源安装配置,否则对一个容器中的一个配置的更改将不适用于在其他节点上运行的其他容器。如果该配置作为其内部写时复制文件系统的一部分存储在容器内部,那么任何其他容器中都不会显示来自一个容器的更改。