linux - docker 将套接字绑定(bind)到外部端口

标签 linux sockets networking docker

我正在使用 docker 。在 docker 内部,我有一个应用程序将监听套接字绑定(bind)到外部机器的 ip(我运行 docker 的机器的 ip)。有什么办法可以让这样的监听套接字工作吗?这是绑定(bind)到外部 ip 地址 (192.168.1.2) 而不是 docker 的 eth0 (172.17.0.248)

最佳答案

当您运行容器时,将端口映射到您想要访问它的外部端口。 docker run -p 80:80 myapp 这将使您可以访问位于 192.168.1.2:80 的 docker 容器。命令格式为-p {external port}:{internal app port}。

进一步说明。要访问容器内的任何应用程序,您需要公开端口,请参阅 this .本质上,您将端口从容器映射到主机 o/s。

示例:您的容器中有一个在端口 8080 上运行的应用程序,但您希望使用主机 ip 在端口 8000 上访问它。您可以像这样运行您的应用程序 docker run -p 8000:8080 myapp。这会将端口 8080 作为端口 8000 暴露给您的主机 o/s,此时您可以通过 {host ip}:8000 访问它。

关于linux - docker 将套接字绑定(bind)到外部端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32353634/

相关文章:

Java Riak 连接问题

linux - Oracle 在没有任何进程的情况下使用内存

sockets - 将带有套接字编程的字典从服务器发送到客户端

c++ - 如何简单地序列化复杂结构并在 Qt 中通过网络发送它们

即使 ufw 处于非事件状态并且 bind-address 和 skip-networking 已评论,MySQL 端口 3306 也会关闭

ios - 如何在 iOS 中验证 HTTP/2 连接池/重用?

linux - 换行字节 0Ah 被 x86_64 系统调用打印程序忽略

linux - cron 调度程序如何 cd 到某个位置并执行 shell 脚本

javascript - 使用 socket.io 跟踪连接的套接字

Python 套接字示例,为什么这个程序卡在使用 UDP 的 recvfrom 中?