问题描述
我有以下 python 脚本在我的 docker 容器中运行。
addrinfo = socket.getaddrinfo(MYADDR,None)[0]
# Create a socket
s = socket.socket(addrinfo[0],socket.soCK_DGRAM)
# Allow multiple copies of this program on one machine
# (not strictly needed)
s.setsockopt(socket.soL_SOCKET,socket.so_REUSEADDR,1)
# Bind it to the port
s.bind(('',MYPORT))
group_bin = socket.inet_pton(addrinfo[0],addrinfo[4][0])
# Join group
if addrinfo[0] == socket.AF_INET: # IPv4
mreq = group_bin + struct.pack('=I',socket.INADDR_ANY)
s.setsockopt(socket.IPPROTO_IP,socket.IP_ADD_MEMBERSHIP,mreq)
while 1:
try:
print("receiving")
data,addr = s.recvfrom(4096)
except socket.error as e:
pass
else:
print(f"From: {addr}")
print(f"Data: {data}")
该脚本在主机上运行良好,每隔几秒就会从多播接收数据。
当我像这样运行图像时,我什么也没收到
docker run my_image python myscript.py myaddr myport
即使我使用主机网络,我也没有任何流量。
docker run --network host my_image python myscript.py myaddr myport
我不想使用主机网络,因为我想从 docker compose 运行脚本并将其写入桥接网络上的数据库。
build:
context: ./backend
environment:
- POSTGRES_HOST=db
command: python myscript.py myaddr myport
networks:
-backend
depends_on:
- db
另外我的主机是 windows 10,docker 容器是 ubuntu:18.04
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)