我在我的Mac上本地運行postgres.app,並希望我的本地docker容器能夠連接到它。我該如何做到最好?如何讓docker容器可以訪問postgres.app數據庫?
我發現這篇文章建議使用--add-host標誌(Host port with DB to Docker container)將Docker主機的IP地址傳遞給容器。但是,筆記本電腦的IP地址經常更改。沒有一個更簡單的方法來做到這一點?沒有簡單的方法來打開本地端口到容器?
我在我的Mac上本地運行postgres.app,並希望我的本地docker容器能夠連接到它。我該如何做到最好?如何讓docker容器可以訪問postgres.app數據庫?
我發現這篇文章建議使用--add-host標誌(Host port with DB to Docker container)將Docker主機的IP地址傳遞給容器。但是,筆記本電腦的IP地址經常更改。沒有一個更簡單的方法來做到這一點?沒有簡單的方法來打開本地端口到容器?
如果我們正在討論開發人員工作站,可以在主機網絡中啓動Docker容器。
docker run --net=host myContainer
所以你的容器和你的主機運行在同一個棧中,並且應該可以訪問你的postgres.app。
從您的容器中,嘗試連接到主機名docker.for.mac.localhost
。例如:
psql -U my_user docker.for.mac.localhost -U my_user my_database
Mac也有一個不斷變化的IP地址(或根本沒有,如果你沒有網絡 訪問)。從17.06開始,我們的建議是連接到 特殊Mac僅DNS名稱
docker.for.mac.localhost
,該名稱將 解析爲主機使用的內部IP地址。
注:這需要多克的Mac >= 17.06.0-ce-mac18, 2017-06-28
事情很少
docker.for.mac.localhost
爲您的主機(這裏假設你有最新的泊塢窗的Mac作爲@Pete提到)~/Library/Application Support/Postgres/var-9.6/pg_hba.conf
host all all 0.0.0.0/0 trust
listen_addresses = 'localhost'
在~/Library/Application Support/Postgres/var-9.6/postgresql.conf
到
listen_addresses = '*'
或
listen_addresses = 'localhost, docker.for.mac.localhost'
也還可以使用t他在Docker容器子網中的主機網絡地址,缺省情況下爲172.17.0.1。它在Linux主機上運行良好,但我不確定這可以在Mac上使用。 – bekce
@bekce聽起來好像我想嘗試一下。任何指針如何使用我的主機的網絡地址在我的碼頭集裝箱的子網絡? – Malte
那麼,只需嘗試'docker run -it -rm ubuntu',一旦進入:'apt update && apt安裝telnet&telnet 172.17.0.1 5432'並查看它是否可以連接。 – bekce