設定 Docker 容器以使用本機資料庫

設定 Docker 容器以使用本機資料庫

我正在嘗試設定 Docker 容器來使用本機資料庫。

圖片是這個https://hub.docker.com/r/tuxgasy/dolibarr/它建議也創建一個mariadb容器,並將其連結到該容器。

我想配置 Dolibarr 容器來使用mariadb我的主系統上已有的資料庫,該資料庫是從我的發行版的主儲存庫安裝的。

這是我第一次嘗試設定可用的 Docker 應用程序,而且我不是資料庫維護方面的專家,所​​以我有點迷失。

我怎樣才能做到這一點?請盡可能保持說明廣告清晰詳細。

我的系統是完全更新的 openSUSE Tumbleweed。

答案1

有以下三種方式:

  1. 使用 --net=host 選項。這種網路模式本質上意味著容器可以直接存取 localhost,您現在可以存取 localhost:3306。這是命令

    docker run --net=host ... tuxgasy/dolibarr

    然後連接到 mariadblocalhost:3306

  2. 將 mariadb 套接字掛載到 docker 容器並透過套接字連接到 mariadb。例如,如果您將套接字的位置配置為 /var/run/mysqld/mysqld.sock 那麼您可以安裝它並將其用作連接點。

    docker run -v /var/run/mysqld:/mariadb_socket ... tuxgasy/dolibarr

    /mariadb_socket/mysqld.sock然後透過應用程式中的套接字連接到 mariadb

  3. 使用docker主機的ip。首先取得 docker 網路上的主機 IP 位址(在 linux 中輸入 ip addr show並尋找docker0 ip)。這通常是這樣的172.17.0.1(你的旅費可能會改變)。然後你應該可以使用該 IP 位址連接到 mariadb 例如172.17.0.1:3306

筆記:....意味著您可能已經在使用的任何其他選項

答案2

從 Docker v18.03+ 開始,您可以使用主機.docker.內部連接到 Docker 主機的主機名稱。

這是出於開發目的,不適用於 Docker Desktop 以外的生產環境。

關聯

答案3

我創建了一個 docker 容器來做到這一點https://github.com/qoomon/docker-host

然後,您可以簡單地使用容器名稱 dns 從容器內部存取主機系統,例如curlhttp://docker主機:9200

答案4

請記住,qoomon/docker-host 並不比其他方法更好。您必須在 docker 主機上設定應用程式以綁定並偵聽 docker 橋,然後才能存取它。在我看來,qoomon/docker-host只是在網路封包上增加了額外的層,這並沒有提供真正的優勢

這是人們似乎錯過的 qoomon/docker-host 的自述文件副本。 「在Linux 系統上,如果您想透過docker-host 容器存取主機應用程序,除了localhost(127.0.0.1) 之外,還必須將主機應用程式綁定到橋接網路網關。使用下列docker 命令取得橋接網路網關IP 位址”

相關內容