Я создал docker образ для стороны сервера на Windows 7, после того как я запустил контейнер (сервер), я проверил с помощью командной строки, что порт слушает (netstat -an
), порт не слушает. Как я могу заставить сервер слушать вне docker в windows?
Без прослушивания сервера извне, я не могу получить доступ к контейнеру (серверу) с другого хоста в той же сети su bnet , Когда я повторяю тот же процесс в 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)
dockerfile
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