ローカル データベースで動作するように Docker コンテナーをセットアップしようとしています。
画像はこれですhttps://hub.docker.com/r/tuxgasy/dolibarr/また、mariadb
コンテナも作成し、それにリンクすることを提案します。
mariadb
代わりに、ディストリビューションのメイン リポジトリからインストールされた、メイン システムに既にあるデータベースを使用するように Dolibarr コンテナーを構成したいと思います。
動作する Docker アプリケーションをセットアップするのは初めてで、データベースのメンテナンスについてはあまり詳しくないので、少し困惑しています。
どうすればいいですか? 指示はできるだけ明確かつ詳細にしてください。
私のシステムは完全に更新された openSUSE Tumbleweed です。
答え1
方法は3つあります。
--net=hostオプションを使用します。このネットワークモードは、基本的にコンテナがlocalhostに直接アクセスできることを意味し、localhost:3306にアクセスできます。コマンドは次のとおりです。
docker run --net=host ... tuxgasy/dolibarr
次に、mariadbに接続します。
localhost:3306
mariadb ソケットを docker コンテナにマウントし、ソケット経由で mariadb に接続します。たとえば、ソケットの場所を /var/run/mysqld/mysqld.sock に設定した場合、それをマウントして接続ポイントとして使用できます。
docker run -v /var/run/mysqld:/mariadb_socket ... tuxgasy/dolibarr
/mariadb_socket/mysqld.sock
次に、アプリからソケット経由でmariadbに接続します。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を使用してコンテナ内からホストシステムにアクセスすることができます(例:curl)http://dockerhost:9200
答え4
qoomon/docker-host は他の方法より優れているわけではないことに注意してください。アクセスできるようにするには、docker ホスト上のアプリケーションを docker ブリッジにバインドして listen するように構成する必要があります。私の意見では、qoomon/docker-host はネットワーク パケットに余分なレイヤーを追加するだけで、実際の利点はありません。
これは、人々が見逃していると思われる qoomon/docker-host の README のコピーです。「Linux システムでは、docker-host コンテナ経由でアクセスする場合、ホスト アプリケーションをローカルホスト (127.0.0.1) に加えてブリッジ ネットワーク ゲートウェイにバインドする必要があります。次の docker コマンドを使用して、ブリッジ ネットワーク ゲートウェイの IP アドレスを取得します。」