繁体   English   中英

在Docker Swarm主机网络中发布端口

[英]Publish port in Docker Swarm host network

我使用docker-18.03.1-ce创建了一个docker swarm集群。

部署kafka容器时,我在stack.yml中看到如下代码:

  kafka:
    image: wurstmeister/kafka:2.11-2.0.0
    ports:
      - target: 9094
        published: 9094
        protocol: tcp
        mode: host

但是在Docker的网络体系结构文章( https://success.docker.com/article/networking )中,它说:“使用主机驱动程序,Docker不会管理容器网络堆栈的任何部分,例如端口映射或路由规则。 这意味着-p和--icc之类的通用网络标志对于主机驱动程序没有意义。 他们被忽略了。

我很困惑,发布的端口是否会在Swarm主机网络中生效?

有人知道吗?

我从Docker的网络架构文章( https://success.docker.com/article/networking )中找到了答案:

主机模式端口发布仅在运行特定服务任务的主机上公开端口。 端口直接映射到该主机上的容器。 给定服务的单个任务只能在每个主机上运行,​​以防止端口冲突。

$ docker service create --replicas 2 --publish mode=host,target=80,published=8080 nginx

主机模式需要mode = host标志。 它在运行这两个容器的主机上本地发布端口8080。 它不应用负载平衡,因此流向那些节点的流量仅定向到本地容器。 如果没有足够数量的副本副本可用端口,则可能导致端口冲突。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM