我目前正在學習 docker 的基礎知識。我了解到,當容器需要連接到主機時(假設我有一個本地 mysql 資料庫)localhost,它必須用作域而不是host.docker.internal用作域。
所以,而不是這樣的事情:
createConnection(
host: "localhost",
...
)
我會這樣做:
createConnection(
host: "host.docker.internal",
...
)
我想我明白為什么會這樣,但我只是想澄清為什么 docker 不明白什么localhost意思,以及為什么它必須被替換為host.docker.internal.
提前致謝。
uj5u.com熱心網友回復:
docker 非常理解“localhost”的意思:當你創建一個容器時,你正在創建一組隔離的行程,這些行程只能互相看到。它們存在于自己的 cgroup 中用于行程隔離和網路命名空間用于網路隔離。
因此,當某個容器中的某些服務偵聽“localhost:8080”時,該容器中的其他行程可以連接到該埠。但是其他容器中的行程不能。必要時,他們可能有自己的行程在 localhost:8080 上偵聽。
在這種環境中,每個容器在虛擬網路上都有自己的 ip 地址,并且需要橋接到主機網路,localhost當然是指“容器”,而不是“容器主機作業系統”。
這不是 docker 不理解的情況。本地主機重定向到容器是容器化帶來的隔離的基礎。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/372003.html
標籤:码头工人
上一篇:用容器的內容覆寫卷內容
