docker ps显示与nmap不同的端口

docker ps说有三个端口转发:

 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 06584d4ad44e quay.io/coreos/etcd:v3.1.8 "etcd -name etcd01..." 2 days ago Up 3 minutes 0.0.0.0:2379-2380->2379-2380/tcp, 0.0.0.0:4001->4001/tcp etcd01 

但是nmap -sT 127.0.0.1只能find4001

 Starting Nmap 7.40 ( https://nmap.org ) at 2017-06-13 00:06 CEST Nmap scan report for localhost (127.0.0.1) Host is up (0.0011s latency). Not shown: 969 closed ports, 30 filtered ports PORT STATE SERVICE 4001/tcp open newoak 

怎么会? 我可以通过其他方式validation端口是否在那里?

nmap默认不会扫描所有的端口。

正如你所看到的,它只扫描1000个端口:969(closures)+ 30(过滤)+ 1(打开)。

要真正扫描所有端口,应该指定使用-p选项,如下所示: -p1-65535 。 可能需要一段时间,但是…定制的选项,使其更快。 您需要以TCP SYN扫描的根用户身份运行。 默认的TCP连接速度较慢。

不要使用nmap知道在主机中打开哪些端口。 在netstat -tunlpss (它接受与netstat大部分相同的选项)中使用netstat (不build议使用): ss -tunlp 。 选项是nmemonic:

-t用于TCP

-u为UDP

-n为数字

-l用于监听端口

-p用于PID