为了账号安全,请及时绑定邮箱和手机立即绑定

如何与 Docker 容器建立 TCP 传出连接?

如何与 Docker 容器建立 TCP 传出连接?

Go
慕姐4208626 2021-12-20 14:39:20
我的 Go 应用程序通过 TLS 连接tls.Dial()来交换数据。从主机运行时它工作正常:但是当应用程序从 Docker 容器运行时,传出连接似乎不起作用。该应用程序无限期挂起。注 1:与使用相同的行为docker run -p $(docker-machine ip):2500:2500 ...注 2:除了 docker-machine 的默认 VM 附带的默认设置之外,VM 没有额外的端口转发设置。使用 Dockerfile 构建 Docker 镜像:FROM golang:latestRUN mkdir -p "$GOPATH/src/path/to/app"# Install dependenciesRUN go get github.com/path/to/depVOLUME "$GOPATH/src/path/to/app"EXPOSE 2500WORKDIR "$GOPATH/src/path/to/app"CMD ["go", "run", "main.go"]主机运行OS X泊坞窗机。问题如何使 TCP 传出连接正常工作?
查看完整描述

2 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

您正在使用 boot2docker 或 docker-machine(因为您在 OSX 上运行 docker)。如果您使用的是 boot2docker,则必须在 VirtualBox 和 docker 上转发端口,请查看此博客文章:https : //fogstack.wordpress.com/2014/02/09/docker-on-osx-port -转发/

如果你使用的是docker-machine,你必须连接到docker-machine分配的ip,而不是localhost,看看这个帖子:https : //github.com/docker/machine/issues/710

我现在看到您正在专门使用 docker-machine,所以关于 docker-machine 的帖子应该可以回答您的问题。

编辑:我误解了这个问题。您正在尝试在转发端口上建立传出连接。那是不正确的。默认情况下,docker 可以在任何端口上进行传出连接。端口转发仅用于传入连接。请重试而不指定任何要转发的端口。我怀疑您正试图在传入(转发)端口上建立传出连接。


查看完整回答
反对 回复 2021-12-20
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

我刚刚遇到了完全相同的问题。根本无法连接。

重新启动容器,突然传出连接工作正常。容器是否有可能在 docker 更新后幸存下来?

当前使用 Docker 版本 18.09.3,构建 774a1f4


查看完整回答
反对 回复 2021-12-20
  • 2 回答
  • 0 关注
  • 118 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信