【问题标题】:Docker container on Ubuntu blocking outgoing trafficUbuntu 上的 Docker 容器阻止传出流量
【发布时间】:2018-08-31 16:49:45
【问题描述】:

我有一个打包在 Docker 容器中的 NodeJS 应用程序,我从该容器向smtp.gmail.com 发送电子邮件(使用nodemailer npm 库)。同一个容器(我的意思是从同一个注册表中提取的同一个图像)在我的 Macbook 上工作,但在我的 Ubuntu VPS 上抛出超时错误。我尝试使用 docker exec... 从 Ubuntu 容器 ping smtp.gmail.com,并且 ping 工作正常。我想知道是什么问题。以下是详细信息-

我的 Macbook:

  • 操作系统:MacOS High Sierra(版本 10.13.6)
  • Docker:版本 18.06.1-ce,构建 e68fc7a

Ubuntu VPS:

  • 操作系统:Ubuntu 16.04.5 LTS
  • Docker:版本 18.06.1-ce,构建 e68fc7a

错误:

在 Ubuntu 机器上,我使用命令 docker run -p 7656:7656 fb 启动容器。我得到的错误是 -

{ Error: Connection timeout
    at SMTPConnection._formatError (/docker-training/node_modules/nodemailer/lib/smtp-connection/index.js:606:19)
    at SMTPConnection._onError (/docker-training/node_modules/nodemailer/lib/smtp-connection/index.js:579:20)
    at Timeout._connectionTimeout.setTimeout (/docker-training/node_modules/nodemailer/lib/smtp-connection/index.js:261:18)
    at ontimeout (timers.js:478:11)
    at tryOnTimeout (timers.js:302:5)
    at Timer.listOnTimeout (timers.js:262:5) code: 'ETIMEDOUT', command: 'CONN' }

我的 Docker 文件 -

FROM node:9.2.0
RUN mkdir /docker-training
WORKDIR /docker-training
COPY  . ${WORKDIR}
RUN ["npm", "install"]
EXPOSE 7656
ENTRYPOINT ["npm", "start"]

感谢任何帮助。

【问题讨论】:

  • 你能展示你的 Dockerfile 吗?
  • 在主帖中添加了 Docker 文件。谢谢。
  • @Héctor 谢谢。我看过了。但不幸的是,我不相信它的 nodemailer 在这里搞砸了。我相信它在 Linux 上的 Docker 搞砸了。
  • 您的 VPS 是否允许传出流量?

标签: node.js docker nodemailer


【解决方案1】:

网络设置似乎有问题。 请尝试使用--network host 运行容器,如果可以,您需要更改 docker 网络设置以允许从容器到 docker 主机的连接

【讨论】:

  • janmyszkier:谢谢。 --network host 现在可以使用,但问题是这只是“仅限 Linux”的解决方案。 Windows 和 Mac 不支持主机网络。
  • 没有代码我不能真正解决你的问题,但请看看这个,以及其他类似的主题:stackoverflow.com/questions/17770902/…
猜你喜欢
  • 1970-01-01
  • 2017-04-27
  • 2018-12-10
  • 2018-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-20
  • 1970-01-01
相关资源
最近更新 更多