为什么不暴露来自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 run -it -p 8080:8080 --cap-add SYS_PTRACE ex_001
通过echo "TRALALA" | nc -v localhost 8080
发送任何内容的尝试都会进入Connection to localhost 8080 port [tcp/http-alt] succeeded!
,但仅此而已。
容器中的strace实例不打印任何内容。为什么?
即strace挂起等待新的接受
答案 0 :(得分:3)
您需要-p
选项来指定用于侦听的本地端口。否则,它将数字解释为主机名。
ENTRYPOINT ["strace", "nc", "-vlp", "8080"]
打开详细模式可以更清楚地了解nc
在做什么。