2017-08-15 67 views
2

,我們可以創建多個容器承載在碼頭工人一個共享的數據庫,如果我們能創造它,我們將面臨的任何問題與選擇事件(例如)多個實例的多個實例?泊塢窗:一個MySQL數據庫

謝謝。

+1

很抱歉,但你需要使用正確的話的東西,並把它們放在一起的方式,讓你的問題清楚。 Docker有容器。一個容器可以運行一個mysql數據庫。你可以有一個運行1000個mysql容器的羣。這與運行1000個mysql服務器沒有區別。如果你這樣做了,會爲你的應用程序創造什麼問題? Docker不會改變多個mysql服務器產生的問題。 – gview

回答

1

請允許我套用你的問題有點。如果我誤解了任何內容,請糾正我。

問:我可以使用Docker技術運行多個MySQL數據庫實例嗎?

答:簡短的回答:因爲docker container只是你的機器上的process

問:如果我有在同一臺主機上運行MySQL數據庫的多實例,它是如何知道我在我的query上執行哪個實例?

答:那麼這一切都取決於你的數據庫客戶端設置的connection string

每個數據庫實例都會有一個對應的listener進程綁定到主機的特定port。現在

,每個端口只能結合的方法。這是一對一的關係。

從本質上講,如果你已經安裝了10個SQL實例,他們將結合各自的獨特的端口。因此,您在connection string中定義的端口號決定了您要與之通話的數據庫實例。

東西值得一提的是,碼頭工人containers是自包含的。你可以將它們看作傳統的virtual machine,只是它們重量更輕。也就是說,一個容器將擁有自己的網絡基礎設施,類似於您的物理主機。因此,如果您的物理主機能夠看到集裝箱式數據庫,則必須使用綁定端口port-forward

如果上面的段落對你沒有任何意義,那麼我會建議你展示docker的ports-p選項。

參見:https://docs.docker.com/engine/userguide/networking/default_network/binding/

+0

感謝@Samuel Toh的迴應。假設有mysql的承載同一個數據庫體系結構(表和關係)和代理的3個容器,然後我的應用程序將與代理溝通,這個代理請求重定向到根據每個資源的可用性,這3個實例之一容器,假設我有一個「從特定表中選擇請求」代理將如何交互, –