我对使用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"
答案 0 :(得分:1)
如果所有服务都在同一docker-compose.yml文件中声明,则应直接连接它们(服务名称和内部端口),而不要通过主机上映射的端口进行连接。如果它们是在不同文件中定义的,那么您仍然可以将它们放在同一网络上,并通过服务名称和内部端口进行连接。
如果您移植docker-compose.yml,我可以为您提供更好的解释。
通常,除非没有其他选择,否则避免使用主机网络。
答案 1 :(得分:0)
对于桥接网络模式,您的方案看起来不错。如果使用主机网络模式,它将具有主机属性,然后您需要隔离主机以消除任何类型的安全威胁。