Docker没有';不能绑定端口

Docker没有';不能绑定端口,docker,Docker,为什么docker容器中的暴露端口不起作用 让我们考虑下面的例子 Dockerfile: FROM debian RUN apt-get update && \ apt-get -y upgrade && \ apt-get -y install netcat strace EXPOSE 8080 ENTRYPOINT ["strace", "nc", "-l", "8080"] cmd运行docker运行-it-p8080:8080--

为什么docker容器中的暴露端口不起作用

让我们考虑下面的例子

Dockerfile:

FROM debian

RUN apt-get update && \
    apt-get -y upgrade && \
    apt-get -y install netcat strace

EXPOSE 8080

ENTRYPOINT ["strace", "nc", "-l", "8080"]

cmd运行
docker运行-it-p8080:8080--cap add SYS_PTRACE ex_001

任何通过
echo“TRALALA”| nc-v localhost 8080
发送内容的尝试都会导致
连接到localhost 8080端口[tcp/http alt]成功但仅此而已

容器中的strace实例不打印任何内容。为什么?


也就是说,strace挂起等待新的accept

您需要
-p
选项来指定用于侦听的本地端口。否则,它将数字解释为主机名

ENTRYPOINT ["strace", "nc", "-vlp", "8080"]

打开详细模式可以更清楚地了解nc正在做什么。

这很奇怪。在Ubuntu上,nc-L8080可以正常工作。但在debian上,它会导致一个没有
-p