Ubuntu上的Docker容器阻止传出流量

时间:2018-08-30 07:40:04

标签: node.js docker nodemailer

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

我的Macbook:

  • OS: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"]

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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