Docker不绑定(bind)端口

标签 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 run -it -p 8080:8080 --cap-add SYS_PTRACE ex_001

以及任何通过echo "TRALALA"| 发送内容的尝试nc -v localhost 8080 结果为连接到 localhost 8080 端口 [tcp/http-alt] 成功! 但仅此而已。

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

即strace 挂起等待新的接受

最佳答案

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

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

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

关于Docker不绑定(bind)端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57170709/

相关文章:

docker - 入口点 : "entrypoint.sh" - docker compose

docker - docker-compose scale 后如何通过主机名访问其他容器?

MYSQL:连接到 localhost 和 host.docker.internal

git - 从 Heroku 切换到 Docker Platform Cycle.io 问题

postgresql - Flyway无法在Postgres Docker中找到角色

docker - 为什么dockered centos无法识别 pip ?

docker - 如何在 kubernetes 中停止/暂停 pod

docker - 使用 Kubernetes ConfigMaps 的应用程序配置文件

docker - 如何在minikube节点上的kubernetes pod中设置sysctl key ?

c# - 在 Cake (C#) 中获取 TeamCity (Docker Linux) 参数或系统属性不返回任何内容