【问题标题】:Docker. Send mail from host码头工人。从主机发送邮件
【发布时间】:2017-06-24 10:03:57
【问题描述】:

我可以使用邮件从主机发送邮件:

mail -s "Hooray" smb@example.com < /dev/null

但我想使用主机服务器从 docker 容器发送邮件。当我尝试在运行命令中将其映射到 25 端口时,Docker 说“端口已在使用中”:

run -ti -p 25:25 container

我怎样才能实现目标? Host是Centos,docker使用Ubuntu。

【问题讨论】:

  • 嗨。你找到解决办法了吗?
  • @spiil 你好,不,我放弃了:) 我设法直接从 gmail smtp 服务器发送电子邮件
  • 哦,好的。谢谢你的回复:)

标签: ubuntu docker centos


【解决方案1】:

您不能在同一个端口上侦听多个应用程序。因此,如果主机上已经有一个应用程序在侦听端口 25,您可以停止该应用程序,或者将您的容器配置为侦听不同的主机端口,例如:

run -ti -p 2525:25 container

这会导致端口从主机端口 2525 映射到容器端口 25。如果您不需要从容器接收邮件,您可以完全删除此端口映射,仍然允许您发送出站消息。

如果您不知道主机上的 25 端口在使用什么,您可以使用 netstat 命令进行查找:

sudo netstat -lntp

请注意,如果您想查看正在侦听端口的进程,则需要 sudo。

【讨论】:

  • 我想从容器中发送邮件(根本不想接收),所以我根本不需要映射端口?
  • 如果您不需要从容器接收邮件,您可以完全删除此端口映射,这样您仍然可以发送出站邮件。
【解决方案2】:

将端口转发与 docker 容器一起使用,您可以将容器的端口转发到主机。因此,邮件服务器已在主机上使用端口 25。这里需要将端口从主机转发到容器:

Forward host port to docker container

最简单的方法是使用--net=host选项:

docker run --rm -it --net=host container mail -s "Hooray" smb@example.com < /dev/null

【讨论】:

  • 也许有一种方法可以在不使用 --net=host 的情况下做到这一点?我也在网络中使用其他几个容器。
猜你喜欢
  • 1970-01-01
  • 2018-10-14
  • 2013-08-19
  • 2010-12-07
  • 2016-07-22
  • 2021-05-07
  • 1970-01-01
相关资源
最近更新 更多