Сервер не слушает за пределами Docker - PullRequest
1 голос
/ 11 февраля 2020

Я создал 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

1 Ответ

0 голосов
/ 11 февраля 2020

Демон Docker не работает на Windows, что означает, что он работает на отдельной виртуальной машине (VirtualBox, Hyper-V и т. Д. c.). Вам необходимо выяснить, что вы используете, а затем настроить параметры виртуальной машины для пересылки трафика c с хоста (8080) на виртуальную машину (8080). Только тогда ваш Windows хост сможет реально связаться с контейнером.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...