作者:0704034铜豌豆 | 来源:互联网 | 2023-05-24 17:40
我对docker感兴趣了一段时间,但还没有跳进去.我需要设置一个邮件服务器,所以我想也许可以用它作为了解更多有关docker的理由.但是,我不清楚如何最好地去做.
我之前在VPS上安装了一个邮件服务器,但没有安装到多个容器中.我想安装Postfix,Dovecot,MySQL或Postgresql,以及SpamAssassin,类似于这里描述的内容:
https://www.digitalocean.com/community/tutorials/how-to-configure-a-mail-server-using-postfix-dovecot-mysql-and-spamassasin
但是,将它停泊的好方法是什么?我会简单地将所有东西放入一个容器中吗?或者将MySQL放在一个容器中,将Postfix放在另一个容器中,以及为Dovecot和SpamAssassin添加其他容器会更好吗?或者应该共享一些容器?
使用docker安装邮件服务器有什么HOWTO?如果有,我还没有找到它.
1> Moshe Katz..:
Docker的观点不是容器化的集装箱化.它是将属于一起的东西放在一起并将不属于一起的东西分开.
考虑到这一点,我设置它的方式是使用MySql数据库的容器和所有邮件组件的另一个容器.邮件组件通常通过调用彼此的可执行文件或通过读/写共享文件相互集成,因此无论如何将它们分开放在单独的容器中是没有意义的.由于数据库也可以用于其他事情,并且通过套接字与它进行通信,因此将它作为一个单独的容器更有意义.
@Tauren如果你长时间环顾四周,你最终会收集到这类问题的每一个答案.选择最适合你的方式.
@Moshe,我理解你的观点,但我也有其他建议.有人建议,如果MTA内部调用其他可执行文件,最好将它们保存在同一图像中.但是,如果这些可执行文件在自己的进程空间中作为自己的命令运行,则它们应该位于不同的映像中.另一个人建议在不同的容器中运行所有东西,所以mysql,postfix,dovecot,spamassassin等都将是单独的容器.他建议在这种情况下使用--link.这样可以在不影响其他部件的情况下更换每件产品.
2> mc0e..:
Dovecot,Spamassassin等可以在单独的容器中使用postfix.使用LMTP进行连接,它们都可以正常工作.这很实用.
现在为意识形态一点.如果你真的想做"码头工作者"的事情,那会是什么样子.
Postfix很难.它不是一个守护进程,而是一组不同的守护进程,它们相互通信并执行邮件处理任务的不同部分.这些组件守护进程之间的一些交互是通过文件(例如邮件队列),一些是通过套接字,一些是通过信号.
当你启动postfix时,你真的启动了'master'守护进程,然后使用master.cf中的规则启动它需要的其他守护进程.
在这种情况下,记录尤其困难.所有不同的守护进程独立地登录到/ dev/log,如果没有将syslog守护进程放在容器中,就没有办法处理这些日志."不是码头工人!"
基本上,后缀功能的划分是一种微服务方式,但它不是基于容器化.您无法将不同的服务分离到docker下的不同容器中,即使可以,依赖于信号也是有问题的.
我想有可能重新设计'master'守护进程,让它可以访问主机中的docker进程(或在docker中运行docker),因此这个新的主守护进程可以在不同的容器中协调各种服务.我们可以推测,但我没有听说有人将此视为实际项目.
这使得我们更有可能选择一个比postfix更容易使用容器的守护进程,以便在docker中使用.在过去的十年里,我一直在或多或少地使用postfix,并且到目前为止还没有太多理由去看看选项.如果有人可以添加有关更多码头友好的MTA选项的评论,我会非常感兴趣吗?