簡體   English   中英

一般來說,跨(docker)容器共享 unix 套接字文件是否有效?

[英]Is it valid to share unix socket files across (docker) containers in general?

我遇到的問題(這似乎很常見)是我正在對在一台機器上運行的應用程序進行 docker 化,而這些應用程序現在需要在不同的容器中運行(因為那是 docker 范例以及應該如何完成) . 目前我遇到了 postfix 和 dovecot 的問題......人們發現這太痛苦了,因為有大量容器在一個容器中同時運行 dovecot 和 postfix,我正在盡我最大的努力做到這一點,但缺乏.net 協議示例(通過 tcp)太痛苦了,無法繼續。 別管糟糕的日志記錄和那些根本不起作用的東西。 我離題了。

問題

共享 docker 個具有跨不同容器共享的套接字文件的卷並期望它們正確通信是否正確? 是否有我必須注意的限制?

獎勵:出於好奇,這可以擴展到虛擬機嗎?

編輯:我非常感謝分享您提供的信息來源。

Unix 套接字不能跨越 VM 或物理主機邊界。 如果您正在考慮在 Kube.netes、Docker Swarm 等多主機設置中部署此設置,或者甚至只是讓容器在多個主機上運行,您將需要使用一些基於 TCP 的設置。 (在這些環境中共享文件很棘手;共享 Unix 套接字實際上是行不通的。)

如果您使用的是 Docker 桌面,還請記住它運行隱藏的 Linux 虛擬機,即使在本機 Linux 上也是如此。這可能會限制您的選擇。 還有其他設置可以更直接地使用 VM; 例如,我日常使用的 Docker 結果是 Minikube,它在虛擬機中運行一個單節點 Kube.netes 集群,其中有一個 Docker 守護進程。

我希望共享 Unix 套接字僅在兩個容器位於同一物理系統上,並且在適當的情況下位於同一虛擬機內,並且將相同的存儲安裝到兩者(不一定在同一位置)時才有效。 我希望將套接字放在安裝到兩個容器中的名為 Docker 的卷上以工作。 我可能希望綁定安裝的主機目錄僅在未運行 Docker 桌面的本機 Linux 系統上工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM