Docker 到达容器时,数据报IP已更改
我正在尝试建立UDP通信,我的服务器在主机上运行,客户端在容器中运行。我用服务器IP发送初始广播 但是,Docker将我的数据报数据包的Ip地址从主机Ip更改为网关地址,因此在容器内运行的java应用程序无法向主机发送UDP数据包 有没有办法在数据报中保留主机的IPDocker 到达容器时,数据报IP已更改,docker,docker-compose,docker-for-mac,Docker,Docker Compose,Docker For Mac,我正在尝试建立UDP通信,我的服务器在主机上运行,客户端在容器中运行。我用服务器IP发送初始广播 但是,Docker将我的数据报数据包的Ip地址从主机Ip更改为网关地址,因此在容器内运行的java应用程序无法向主机发送UDP数据包 有没有办法在数据报中保留主机的IP version: '2.3' services: cs: image: connectivity:latest hostname: cs restart: always ports:
version: '2.3'
services:
cs:
image: connectivity:latest
hostname: cs
restart: always
ports:
# external:internal
- "8088:9980"
- "24005:24005/udp"
volumes:
- ../../../target:/home
depends_on:
- rabbitmq-server
network_mode: host
networks:
hnet:
aliases:
- cs
cap_add:
- ALL
environment:
SERVER_PORT: "9980"
SPRING_RABBITMQ_HOST: "rabbitmq-server"
DCX_CS_RABBITMQ_PORT: "5672"
SPRING_PROFILES_ACTIVE: "local,integration"
rabbitmq-server:
image: rabbitmq:3.6-management-alpine
hostname: rabbitmq-server
restart: always
networks:
network_mode: host
hnet:
aliases:
- rabbitmq-server
ports:
# external:internal
- "5680:5672"
- "15680:15672"
- "32780:32768"
一种简单的方法是使用网络模式运行容器
主机:
docker运行--网络=主机
在中,您的容器将使用docker主机网络接口,而不是自己的,因此将与docker主机共享相同的IP地址。请注意,在此模式下,容器打开的任何端口都会在docker主机网络接口上打开,即使没有发布端口也是如此。使用host.docker.internal作为服务器IP从容器到达服务器的解决方法。谢谢,我的容器依赖于另一个容器。它应该在主机模式下运行吗?当我尝试时,我在日志中看到一个未知主机异常,rabbitmq服务器主机名无法解析。我在问题上加了我的docker作文。我在mac上以本机方式运行Docker。您可以,但当我使用--net=host时,&localhost:15672无法工作,请在localhost:5672
上连接到兔子。我认为这是一个Mac限制,它不会让我发布端口:),显然。