Всего 2 разных стиля netcat
.nc
в контейнере не совпадает с вашим хостом, поэтому пропуск хоста, решение контейнера не удалось.
Я думаю, ваш хост nc
не традиционный, что-то вроде следующего:
# nc
This is nc from the netcat-openbsd package. An alternative nc is available
in the netcat-traditional package.
usage: nc [-46bCDdhjklnrStUuvZz] [-I length] [-i interval] [-O length]
[-P proxy_username] [-p source_port] [-q seconds] [-s source]
[-T toskeyword] [-V rtable] [-w timeout] [-X proxy_protocol]
[-x proxy_address[:port]] [destination] [port]
Ваш контейнер nc
- это другая версия, он имеет совершенно другой синтаксис команды:
# docker run --rm --name test -it -p 9999:9999 busybox /bin/sh
/ # nc
BusyBox v1.29.3 (2018-10-01 22:37:18 UTC) multi-call binary.
Usage: nc [OPTIONS] HOST PORT - connect
nc [OPTIONS] -l -p PORT [HOST] [PORT] - listen
-e PROG Run PROG after connect (must be last)
-l Listen mode, for inbound connects
-lk With -e, provides persistent server
-p PORT Local port
-s ADDR Local address
-w SEC Timeout for connects and final net reads
-i SEC Delay interval for lines sent
-n Don't do DNS resolution
-u UDP mode
-v Verbose
-o FILE Hex dump traffic
-z Zero-I/O mode (scanning)
Если вы используете netstat
в контейнере, вы обнаружите, что порт 9999
не был открытс вашей командой, в результате ваш клиент немедленно выйдет.
Итак, вам нужно изменить команду следующим образом:
docker run --rm --name test -it -p 9999:9999 busybox nc -l -p 9999