Рейтинг:0

Невозможно перенаправить порты на любом докере

флаг je

Итак, я пытался настроить некоторые веб-сайты и другие вещи на своем сервере Ubuntu 20.04.3 LTS. Различные базовые приложения WebUI в разных докерах, доступ к которым осуществляется через nginx. Но я хочу иметь возможность подключаться к ЛЮБЫМ из моих докеров. После устранения неполадок кажется, что переадресация портов не работает ни на одном из моих докеров. Все началось с моего докера node-red, nginx тоже не работал, и теперь я настроил очень простой докер whoami с очень простым веб-сервером, работающим на порту 8000. Я до сих пор не могу подключиться к нему.

Если я зайду в докер с помощью «docker exec -ti whoami sh», я смогу получить доступ к веб-серверу через wget, но не из-за пределов докера.

Я искал много и большинство проблем, где ложное использование флага -p или веб-сервер только прослушивает локальный хост и так далее. И то, и другое здесь не так.

Вот вывод моего тестового терминала, чтобы показать, что происходит

$~Â докер ps
ИДЕНТИФИКАТОР КОНТЕЙНЕРА ИЗОБРАЖЕНИЕ КОМАНДА СОЗДАНА СТАТУС ИМЕНА ПОРТОВ
726da9705b7f jwilder/whoami "/app/http" Около минуты назад Наверх Около минуты 0.0.0.0:8000->8000/tcp, :::8000->8000/tcp whoami
$~Â 
$~Â wget -O - http://127.0.0.1:8000/
--2021-10-16 23:19:09-- http://127.0.0.1:8000/
Подключение к 127.0.0.1:8000... подключено.
HTTP-запрос отправлен, ожидается ответ...Ошибка чтения (сброс соединения узлом) в заголовках.
Повторная попытка.

--2021-10-16 23:21:21-- (попробуйте: 2) http://127.0.0.1:8000/
Подключение к 127.0.0.1:8000... подключено.
HTTP-запрос отправлен, ожидается ответ... ^C
$~Â 
$~Â docker exec -ti whoami sh
/приложение # wget -O - http://127.0.0.1:8000/
Подключение к 127.0.0.1:8000 (127.0.0.1:8000)
я 726da9705b7f
- 100% |****************************************************** *******| 17 00:00:00 Расчетное время прибытия
/приложение # выход
$~Â 
$~Â cat run.sh
docker run -d -p 8000:8000 --name whoami -t jwilder/whoami
$~Â 
$~ 

Доказательство того, что сервер не привязан к локальному хосту:

$~Â 
$~Â docker logs -f whoami
Слушаю: 8000
я 726da9705b7f
^ С
$~Â 
$~Â docker exec -ti whoami sh
/приложение # ./http
Слушаю: 8000
2021/10/16 22:36:23 слушать tcp: 8000: bind: адрес уже используется
/приложение # выход
$~ 
$~Â 

И, насколько я могу судить, служба докеров действительно использует порт:

$~ 
$~ судо lsof -i:8000
КОМАНДА PID ПОЛЬЗОВАТЕЛЬ ТИП FD УСТРОЙСТВО РАЗМЕР/ВЫКЛ НАЗВАНИЕ УЗЛА
docker-pr 24976 root 4u IPv4 112329 0t0 TCP *:8000 (СЛУШАТЬ)
docker-pr 24984 root 4u IPv6 114001 0t0 TCP *:8000 (СЛУШАТЬ)
$~ 
$~ 

Но он все еще не работает.

Кто-нибудь знает, что происходит не так, я очень невежественен.

Phillip avatar
флаг je
Хорошо, я имею в виду, что обнаружил, что если я очищаю и переустанавливаю docker.io в первый раз, когда я использую порт, он работает, но если я останавливаю и запускаю докер и использую docker run для его воссоздания, он перестает работать.
Рейтинг:0
флаг de

Попробуйте запустить этот контейнер на другом порту:

$ docker run --rm -d -p 8001:8000 --name whoami -t jwilder/whoami
64a5059666e0f3db12562a44edf576336f73fcecd5e7d86c1e739259e1ffd307
$ curl локальный хост: 8001
Я 6a82c9e7371e

Если это работает, то это может быть что-то подозрительное на хосте (возможно, iptables с перенаправлением портов).

Phillip avatar
флаг je
Нет, не работает.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.