docker network_mode的不同

因为在同一台服务器上部署2套docker emqx服务,总是提示“Protocol 'ekka':register/lister error:eaddrinuse”,就因为network_mode配置的是host,怎么隐射都是同样的错误,很是无奈,没想到!!!!!,host模式不需要端口隐射

在 docker-compose 中,network_mode 用于指定容器的网络模式,不同的网络模式决定了容器如何与外部网络以及其他容器进行通信。以下是 docker-compose 中 network_mode 支持的常见选项及其差别:

1. bridge(默认模式)

  • 说明:这是默认的网络模式。当使用 bridge 模式时,Docker 会创建一个虚拟的网桥(通常命名为 docker0),容器会连接到这个网桥上,并从网桥的 IP 地址段中获取一个私有 IP 地址。容器可以通过宿主机的网络接口与外部网络通信,同时也可以通过 IP 地址与同一网桥上的其他容器通信。
  • 示例

收起

yaml

version: '3'
services:
  myservice:
    image: myimage
    network_mode: bridge

  • 优缺点
    • 优点:容器之间相互隔离,安全性较高;容器可以方便地与外部网络通信。
    • 缺点:需要进行端口映射才能让外部网络访问容器内的服务;容器之间通信需要知道对方的 IP 地址。

2. host

  • 说明:使用 host 模式时,容器会直接使用宿主机的网络栈,即容器与宿主机共享网络接口。容器的 IP 地址就是宿主机的 IP 地址,容器内监听的端口会直接暴露在宿主机上,不需要进行端口映射。
  • 示例

收起

yaml

version: '3'
services:
  myservice:
    image: myimage
    network_mode: host

  • 优缺点
    • 优点:网络性能较好,因为不需要进行网络地址转换(NAT);容器可以直接使用宿主机的网络资源,无需进行端口映射。
    • 缺点:容器之间的网络隔离性较差,一个容器的网络配置可能会影响其他容器;安全性较低,因为容器直接使用宿主机的网络接口。

3. none

  • 说明none 模式会禁用容器的网络功能,容器没有网络接口,无法与外部网络或其他容器进行通信。这种模式通常用于对网络访问有严格限制的场景,或者需要手动配置网络的情况。
  • 示例

收起

yaml

version: '3'
services:
  myservice:
    image: myimage
    network_mode: none

  • 优缺点
    • 优点:提供了最高级别的网络隔离,容器无法与外部网络或其他容器通信,安全性极高。
    • 缺点:容器的网络功能完全被禁用,需要手动配置网络才能使其正常工作,使用起来比较复杂。

4. service:[service name]

  • 说明:这种模式允许一个容器加入另一个服务的网络命名空间,使得这两个容器可以共享相同的网络栈。这样,它们可以通过 localhost 相互通信,就像在同一个网络环境中一样。
  • 示例

收起

yaml

version: '3'
services:
  service1:
    image: myimage1
  service2:
    image: myimage2
    network_mode: service:service1

  • 优缺点
    • 优点:方便容器之间的通信,不需要知道对方的 IP 地址,通过 localhost 就可以进行通信;可以实现容器之间的紧密耦合。
    • 缺点:容器之间的网络隔离性较差,一个容器的网络配置可能会影响另一个容器;对服务的依赖较强,如果被依赖的服务出现问题,可能会影响到其他容器。

5. container:[container name/id]

  • 说明:与 service:[service name] 类似,container:[container name/id] 模式允许一个容器加入另一个指定容器的网络命名空间,使得这两个容器可以共享相同的网络栈,通过 localhost 相互通信。
  • 示例

收起

yaml

version: '3'
services:
  myservice1:
    image: myimage1
    container_name: mycontainer1
  myservice2:
    image: myimage2
    network_mode: container:mycontainer1

  • 优缺点:与 service:[service name] 模式类似,优点是方便容器之间的通信,缺点是网络隔离性较差,对指定容器的依赖较强。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值