从现有 Docker 群中提取 docker-compose.yml

Extract docker-compose.yml from an existing Docker Swarm

我在 Swarm 中有一个现有堆栈,我想向其添加一些模板化变量。 Swarm 目前由 Portainer 管理,但并非由 Portainer 创建。我无法再访问创建堆栈的原始 YML,并且自从它被使用以来,已经对服务进行了许多编辑。

Portainer 很容易让我添加和删除服务,但似乎将服务与堆栈相关联的能力需要原始的 YML。

是否有自动从现有堆栈中提取 YML 文件的方法?如果没有,有没有办法在不使用 docker stack deploy 的情况下将新服务与现有堆栈相关联?

docker stack deploy 可以轻松地将新服务添加到现有的堆栈命名空间。只是不要使用 --prune 标志。

我们在生产和暂存 CD 管道中经常使用它,因为我们使用堆栈作为环境,因此将多个微服务发布到单个堆栈中 - 通过传递多个 --compose-file 指令,或执行单个 --涉及单个服务时部署组合文件堆栈。


dockers dns解析就更有意思了。 Docker 不知道您的服务部署到的堆栈名称空间 - dns 由您的服务所连接的网络解析,并且网络别名已隐式自动分配给您的服务。

网络别名可以在服务级别明确控制,完全没有堆栈docker service create --network name=my-network,alias=web1,并且在组合文件中的服务网络部分有类似的别名语法。