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

标签 linux docker docker-swarm

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

例如:我希望经理 1 和经理 3 只有能够访问我的网络服务的人。

我现在的问题是经理 1、2、3 可以访问我的服务。

我只想让 1 和 3 能够在不从 Docker Swarm 中移除 2 的情况下执行此操作。

enter image description here

最佳答案

要禁用入口网络,请使用长语法定义已发布的端口,并将模式设置为 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/

相关文章:

python - 如何确定哪个进程正在使用 Linux 中的端口

c - 通过套接字发送任意长度的数组。字节顺序

security - 是否可以防止从容器内部访问RedHat/CentOS Docker主机根目录?

Docker随机重启所有服务

docker - 如何使用docker-machine用alpine而不是boot2docker创建docker主机?

ruby-on-rails - 限制 Imagemagick 使用的空间和内存

windows - 从命令行对不同长度的十六进制数进行排序?

docker - Openshift (Origin) 启用图像以使用 ROOT 用户运行

docker - Nginx Plus无法使用Docker嵌入式DNS服务器解析服务

docker - 在Docker swarm模式下,有没有办法从worker那里获取管理者的信息?