Docker: соединение отклонено для открытого порта на локальном хосте - PullRequest
0 голосов
/ 19 июня 2019

У меня есть изображение Docker, с которым я обрабатываю изображение и получаю полученное изображение с помощью curl.Я открыл порт в своем Dockerfile

FROM debian:latest

RUN apt-get -y update && apt-get install -y git python3-pip python3-dev python3-tk vim procps curl

#Face classificarion dependencies & web application
RUN pip3 install numpy scipy scikit-learn pillow tensorflow pandas h5py opencv-python==3.2.0.8 keras statistics pyyaml pyparsing cycler matplotlib Flask

ADD . /ekholabs/face-classifier

WORKDIR ekholabs/face-classifier

ENV PYTHONPATH=$PYTHONPATH:src
ENV FACE_CLASSIFIER_PORT=8084
EXPOSE $FACE_CLASSIFIER_PORT

ENTRYPOINT ["python3"]
CMD ["src/web/faces.py"]

Как только я создаю образ:

sudo docker build . --tag fc

Я запускаю свой образ, используя

sudo docker run -d -p 8084:8084 --name=face-classification fc

Как только я это делаю, ясначала попытайтесь свернуться для вывода:

sudo curl -v -F image=@smile.png http://localhost:8084/classifyImage > output.txt

и получите ошибку отклоненного соединения:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 127.0.0.1...
* connect to 127.0.0.1 port 8084 failed: Connection refused
* Failed to connect to localhost port 8084: Connection refused
* Closing connection 0
curl: (7) Failed to connect to localhost port 8084: Connection refused

В этот момент я не был уверен, что соединение неверно, поэтому я пытаюсьобщий curl для локального хоста:

sudo curl http://localhost:8084/

и получить следующую ошибку:

curl: (7) Failed to connect to localhost port 8084: Connection refused

На этом этапе я проверяю, открыт ли порт док-станции.Из этого вывода похоже, что он не выставлен, так как ничего не перечислено в портах.

ubuntu@ip-172-31-6-79:~/face_classification$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
2e343778c8fc        fc                  "python3 src/web/fac…"   8 minutes ago       Exited (1) 8 minutes ago                       face-classification

Как правильно установить соединение?

1 Ответ

0 голосов
/ 19 июня 2019

Ваш контейнер имеет статус EXITED (Вам необходимо проверить журналы Docker Logs container_name) или, возможно, вы неправильно используете ENTRYPOINT и CMD, попробуйте:

CMD ["python3", "src / web / faces.py"]

Надеюсь, это поможет.

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