【问题标题】:docker visit container from LANdocker从局域网访问容器
【发布时间】:2018-07-30 01:54:46
【问题描述】:

我有一个在 docker 容器中运行的程序,我公开了端口 8888。但是,当我尝试从设备(与主机位于同一 LAN 但不是主机)连接程序时,它失败了。 这是我的 docker 文件

来自 golang:1.10.1

......

运行 go build -buildmode=plugin -o plugin.so plugin.go

暴露 8666:8888

我用

启动容器

docker run -it -P --network host plugin:v0.3 bash

然后运行

去运行程序.go

在 bash 中。 它说

2018/07/30 01:51:43 监听8888端口

但我无法从其他设备连接到端口(与主机在同一局域网中,但不是主机)

然后我尝试了

docker ps -a

看起来不一样,ports 列是空的(通常应该有映射?)

【问题讨论】:

  • 你确定它首先从容器内部工作吗?
  • @MathieuLescaudron 它奏效了。问题解决了。谢谢。

标签: docker networking portforwarding


【解决方案1】:

Expose 不会为您创建端口映射,它们只是“设计者给用户的说明”。将 -p 8666:8888 添加到 Docker 运行命令行。

【讨论】:

  • 感谢您的回复。试过 docker run -it -p 8666:8888 --network host plugin:v0.5 bash 没有运气
【解决方案2】:

我已经通过替换解决了这个问题

去运行程序.go

之后

docker run -it -P --network host plugin:v0.3 bash

docker run -p 8666:8888 plugin:v0.5 go run program.go

这就像魔术我仍然不知道为什么但它有效。(似乎docker只会在容器启动时进行端口转发)

稍后我会深入研究它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 2016-06-15
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多