Docker自定义网络或network_mode = host应该选择哪一个?

时间:2019-06-23 06:36:53

标签: spring-boot docker docker-compose

我对使用network_host模式有疑问。 我想互相通信的docker_compose中有3到4个spring-boot服务。最初,我使用定制网络来实现服务的互连,为此我必须指定每个端口的主机url,但是后来我找到了network_mode主机,我认为它对我来说更容易,代码更改更少。 我的问题是拥有定制网络的最佳实践是什么?或者我们可以使用network_mode主机来实现服务之间的通信?

下面是我的docker-compose文件。

version: '3'
services:
    redis:                                                                          
       image: redis
       ports:
           - "6379:6379"
    cas-service:
        container_name: cas-service
        image: localhost:5000/cas-service:docker-1.0
        volumes:
             -/DiGiID:/DiGiID   
        ports:
           - "8082:8082"
        depends_on:
            - redis
    eureka-service:
        container_name: eureka-service
        image: localhost:5000/eureka-service:docker-1.0
        volumes:
             -/DiGiID:/DiGiID
        ports:
           - "8301:8301"        
    user-service:
        container_name: user-service
        image: localhost:5000/user-service:docker-1.0
        volumes:
             -/DiGiID:/DiGiID
        ports:
            - "8302:8302"
        depends_on:
              - cas-service
    sftp-service:
        container_name: sftp-service
        image: localhost:5000/sftp-service:docker-1.0
        volumes:
             -/DiGiID:/DiGiID
        ports:
            - "8333:8333"
        depends_on:
              - cas-service
    product-service:
        container_name: product-service
        image: localhost:5000/product-service:docker-1.0
        volumes:
             -/DiGiID:/DiGiID
        ports:
            - "8304:8304"
        depends_on:
              - cas-service
    device-service:
        container_name: device-service
        image: localhost:5000/device-service:docker-1.0
        volumes:
             -/DiGiID:/DiGiID
        ports:
            - "8303:8303"
        depends_on:
              - cas-service
    digiid-service:
        container_name: digiid-service
        image: localhost:5000/digiid-service:docker-1.0
        volumes:
             -/DiGiID:/DiGiID
        ports:
           - "8080:8080"

2 个答案:

答案 0 :(得分:1)

如果所有服务都在同一docker-compose.yml文件中声明,则应直接连接它们(服务名称和内部端口),而不要通过主机上映射的端口进行连接。如果它们是在不同文件中定义的,那么您仍然可以将它们放在同一网络上,并通过服务名称和内部端口进行连接。

如果您移植docker-compose.yml,我可以为您提供更好的解释。

通常,除非没有其他选择,否则避免使用主机网络。

答案 1 :(得分:0)

对于桥接网络模式,您的方案看起来不错。如果使用主机网络模式,它将具有主机属性,然后您需要隔离主机以消除任何类型的安全威胁。