2017-02-07 232 views
1

發送郵件,我可以從主機發送郵件,使用郵件:碼頭工人。從主機

mail -s "Hooray" [email protected] < /dev/null 

但我想使用主機服務器從搬運工集裝箱發送郵件。碼頭工人說,「端口已在使用」當我嘗試它在運行命令映射到25端口:

run -ti -p 25:25 container 

我怎樣才能達到目標? 主機是Centos,碼頭使用Ubuntu。

+1

嗨。你找到了一些解決方案嗎? – spiil

+0

@spiil你好,不,我放棄了:)我設法直接從Gmail郵件服務器發送電子郵件 – Snobby

+0

哦。感謝您的回覆:) – spiil

回答

0

使用端口轉發與碼頭集裝箱將容器的端口轉發給主機。所以你有郵件服務器上的主機上已經使用了25端口。在這裏,你需要從主機端口轉發到容器:

Forward host port to docker container

最簡單的方法是使用--net=host選項:

docker run --rm -it --net=host container mail -s "Hooray" [email protected] < /dev/null 
+0

也許有沒有辦法做到這一點--net = host?我也在網絡中使用其他幾個容器。 – Snobby

0

不能與多個應用程序在同一端口上偵聽。所以,如果已經有主機偵聽端口25上的應用程序,你可以停止該應用程序,或配置您的容器聽不同的主機端口,如:

run -ti -p 2525:25 container 

引起端口從映射主機端口2525到容器端口25.如果您不需要從容器接收郵件,則可以完全刪除此端口映射,這仍然允許您發送出站郵件。

如果你不知道什麼是使用主機上的端口25,你可以用netstat命令看這件事:如果你想看到的過程

sudo netstat -lntp 

注意,sudo的,要求正在港口上聆聽。

+0

我想從容器發送郵件(不想收到它們),所以我根本不需要映射端口? – Snobby

+0

如果您不需要接收來自容器的郵件,則可以完全刪除此端口映射,這仍然允許您發送出站郵件。 – BMitch

相關問題