docker ps 显示与 nmap 不同的端口

docker ps shows different ports than 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只能找到4001:

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

怎么来的?我可以通过其他方式验证端口是否存在吗?

nmap默认不扫描所有端口。

如你所见,它只扫描了 1000 个端口:969(关闭)+ 30(过滤)+ 1(打开)。

要真正扫描 所有 端口,您应该指定使用 -p 选项,如下所示:-p1-65535。不过,这可能需要一段时间……自定义选项以使其更快。您需要 运行 以 root 身份进行 TCP SYN 扫描。默认的 TCP 连接较慢。

不要使用 nmap 来了解在主机中打开了哪些端口。使用 netstat(已弃用),如 netstat -tunlpss(接受与 netstat 大部分相同的选项): ss -tunlp。选项是 nmemonic:

-t for TCP

-u for UDP

-n for numeric

-l for listening ports

-p for PID's