如何从docker swarm中的管理器中删除该服务

时间:2018-02-05 01:54:08

标签: linux docker docker-swarm

我想要做的是删除特定Docker Swarm管理器的服务。

例如:我希望Manager 1和Manager 3只能访问能够访问我的Web服务的人。

我现在的问题是Manager 1,2,3可以访问我的服务。

我只想1和3能够这样做,而无需从Docker Swarm中删除2。

enter image description here

1 个答案:

答案 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进行部署。