nc
工作正常。
Connection to 10.0.0.10 22 port [tcp/ssh] succeeded!
但是当我在docker容器中执行相同的命令时,它会给出下面的UNKNOWN错误/异常。
10.0.0.10: inverse host lookup failed: Unknown host
(UNKNOWN) [10.0.0.10] 22 (ssh) open
以下是我正在使用的nc
命令:
nc -vz 10.0.0.10 22 -w 4
答案 0 :(得分:5)
只需在侦听器和客户端的两侧放置-n即可删除此错误,因为它会忽略使用它的DNS查找。
答案 1 :(得分:4)
"反向主机查找失败"只是意味着nc
想要打印哪个主机名10.0.0.10对应,但不能。
UNKNOWN就是它作为主机名打印的内容。
这与#34不同;我查了一下,但它似乎与任何东西都没有对应"这就是容器外发生的事情。
如果您确实想避免此错误,则需要在容器内设置工作DNS。
答案 2 :(得分:1)
是的,如果你有不 SSH进入docker容器,这是预期的。
在VM中可以看到 Connection to 10.0.0.10 22 port [tcp/ssh] succeeded!
,因为您已将SSH作为ssh username@10.0.0.10
进入VM,并且在VM中使用端口22
进行SSH。
但是,当您在Docker容器内时(使用docker run
或docker exec
或docker attach
),端口22
将不 ,因此预期来自nc
的以下错误在docker容器中:
10.0.0.10: inverse host lookup failed: Unknown host
(UNKNOWN) [10.0.0.10] 22 (ssh) open
以下是在80
泊坞窗容器内使用nc
成功测试端口nginx
的步骤:
$ sudo docker run --name docker-nginx -d -p 80:80 nginx
$ sudo docker exec -it docker-nginx /bin/bash
root@60ec582e90f4:/# apt-get -y update
root@60ec582e90f4:/# apt-get -y upgrade
root@60ec582e90f4:/# apt-get install -y net-tools
root@60ec582e90f4:/# apt-get install -y netcat
# make sure that port 80 is used
root@60ec582e90f4:/# netstat -pan | grep 80
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1/nginx: master pro
# nc will work now inside the nginx container as port 80 is used inside the container
root@60ec582e90f4:/# nc -vz 127.0.0.1 80 -w 4
localhost [127.0.0.1] 80 (?) open
因此,要使nc -vz a.b.c.d P -w 4
在容器内工作,必须在该容器内的IP地址P
上使用端口a.b.c.d
。