gpt4 book ai didi

docker - 服务器不在Docker之外监听

转载 作者:行者123 更新时间:2023-12-02 19:51:45 25 4
gpt4 key购买 nike

启动容器(服务器)后,使用命令提示符检查端口是否正在监听(netstat -an)端口未监听的容器(服务器)后,在Windows 7上为服务器端创建了一个Docker镜像。如何使服务器在Windows中的docker之外进行监听?

如果不从外部收听服务器,则无法从同一子网中的其他主机访问容器(服务器)。
当我在Ubuntu 18.04中重复相同的过程时,它可以正常工作,并且端口正在波纹管中监听:

TCP    0.0.0.0:8000           0.0.0.0:0              LISTENING

我用来启动容器的命令是:
 run -it -p 8000:8000 server:latest

server.py
import socket
import time
import pickle
HEADERSIZE = 10

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('0.0.0.0', 8000))
s.listen(5)

while True:
# now our endpoint knows about the OTHER endpoint.
clientsocket, address = s.accept()
print(f"Connection from {address} has been established.")
d = {1:"hello", 2: "world"}
msg = pickle.dumps(d)
msg = bytes(f"{len(msg):<{HEADERSIZE}}", 'utf-8')+msg
print(msg)
clientsocket.send(msg)

docker 文件
FROM python:3.6
COPY test /test/
RUN pip install --upgrade pip
EXPOSE 8000
CMD ["python", "test/server.py"]
#CMD ["python", "test/client.py"]

在docker内部:
$ docker port server
8000/tcp -> 0.0.0.0:8000

并且在docker中使用默认的网络“bridge”

最佳答案

Docker守护程序并非在Windows上 native 运行,这意味着它在单独的虚拟机(VirtualBox,Hyper-V等)中运行。您需要找出正在使用的内容,然后调整VM的设置,以将流量从主机(8080)转发到VM(8080)。只有这样,您的Windows主机才能真正与容器进行通信。

关于docker - 服务器不在Docker之外监听,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60170815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com