Не могу достучаться на веб-сервер в контейнере Docker
При запуске команды
docker compose up
У меня запускается контейнер, на котором есть веб-сервис на Flask. Вот что мне показывает в командной строке:
И я могу посылать на него запросы по адресу http://localhost:8000 и все работает. Я закрываю этот контейнер, нажав Ctrl+c, и пытаюсь его запустить через команду docker run :
Вроде бы запустилось:
Но запросы не посылаются, пишет:
Error: Couldn't connect to server
Я пробовал менять порт на 5000, и название сервера менять на http://127.0.0.1 и http://172.17.0.4, но так же не могу достучаться до сервера. Как мне найти адрес, по которому я могу достучаться до сервера?
И добавка к этому вопросу:
Нажимаю Ctrl+c, чтобы остановить веб-сервер, но сервер не останавливается. Могу выключить сервер только закрыв командную строку. Почему так?
Ответы (1 шт):
При запуске через docker run по умолчанию порты контейнера не доступны снаружи. При запуске контейнера нужно опубликовать нужный порт (ключ командной строки -p), и после двоеточия указать под каким номером порта он будет доступен снаружи (если не указать, то порт контейнера будет доступен снаружи через порт со случайным номером).
Соответственно, вам нужно запускать так:
docker run -p 5000:5000 ...
Документация: Container networking / Published ports


