我想做的是删除特定 Docker Swarm 管理器的服务。
例如:我希望经理 1 和经理 3 只有能够访问我的网络服务的人。
我现在的问题是经理 1、2、3 可以访问我的服务。
我只想让 1 和 3 能够在不从 Docker Swarm 中移除 2 的情况下执行此操作。
最佳答案
要禁用入口网络,请使用长语法定义已发布的端口,并将模式设置为 host
。这只会在服务运行的主机上发布端口。 https://docs.docker.com/compose/compose-file/#long-syntax-1
ports:
- target: 80
published: 8080
protocol: tcp
mode: host
如果您希望服务在一组节点上可用,我建议您在要运行服务的节点上创建一个标签,使用该标签上的约束配置服务,并在全局模式下安排服务而不是复制。
docker 节点更新 --label-add myapp=true node1
在部署部分配置约束和调度方式:
deploy:
mode: global
placement:
constraint:
- node.labels.myapp == true
有关详细信息,请参阅部署部分引用:https://docs.docker.com/engine/reference/commandline/service_create/#specify-service-constraints-constraint
要使用 docker service create
命令运行它,语法如下:
docker service create \
--publish published=8080,target=80,mode=host,protocol=tcp \
--mode global \
--constraint 'node.labels.myapp == true' \
...
这可能很难输入,所以我建议使用 compose.yml 文件并使用 docker stack deploy -c compose.yml $stack_name
进行部署。
关于linux - 如何从docker swarm中的管理器中删除服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48614895/