我想要做的是删除特定Docker Swarm管理器的服务。
例如:我希望Manager 1和Manager 3只能访问能够访问我的Web服务的人。
我现在的问题是Manager 1,2,3可以访问我的服务。
我只想1和3能够这样做,而无需从Docker Swarm中删除2。
答案 0 :(得分:0)
要禁用入口网络,请使用长语法定义已发布的端口,并将模式设置为host
。这只会在运行服务的主机上发布端口。 https://docs.docker.com/compose/compose-file/#long-syntax-1
ports:
- target: 80
published: 8080
protocol: tcp
mode: host
如果您希望服务在一组节点上可用,我建议您在要运行服务的节点上创建标签,使用该标签上的约束配置服务,并在全局模式下安排服务而不是复制。
docker node update --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
进行部署。