Настройте 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

    Затем подключитесь к mariadb с помощьюlocalhost:3306

  2. Смонтируйте сокет mariadb в контейнер docker и подключитесь к mariadb через сокет. Например, если вы настроите расположение сокета как /var/run/mysqld/mysqld.sock, то вы можете смонтировать и использовать его в качестве точки подключения.

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

    Затем подключитесь к mariadb через сокет /mariadb_socket/mysqld.sockиз вашего приложения.

  3. Используйте ip хоста docker. Сначала получите ip-адрес хоста в сети docker (в linux введите ip addr showи найдитеdocker0 ip). Обычно это что-то вроде172.17.0.1(ваш пробег может отличаться). Тогда вы сможете использовать этот IP-адрес для подключения к mariadb, например172.17.0.1:3306

ПРИМЕЧАНИЕ:... означает любые другие опции, которые вы, возможно, уже используете

решение2

Начиная с Docker v18.03+ вы можете использоватьhost.docker.внутреннийимя хоста для подключения к вашему хосту Docker.

Это предназначено для целей разработки и не будет работать в производственной среде за пределами Docker Desktop.

связь

решение3

Я создал Docker-контейнер именно для этого.https://github.com/qoomon/docker-host

Затем вы можете просто использовать DNS-имя контейнера для доступа к хост-системе изнутри контейнера, например curlhttp://dockerhost:9200

решение4

Помните, что qoomon/docker-host ничем не лучше любого другого метода. Вы должны настроить свое приложение на docker host для привязки и прослушивания docker bridge, прежде чем оно станет доступным. По моему мнению, qoomon/docker-host просто добавляет дополнительный слой к сетевому пакету, что не дает никаких реальных преимуществ

Это копия README для qoomon/docker-host, которую люди, похоже, пропускают. "В системах Linux вам необходимо привязать свои хостовые приложения к сетевому шлюзу моста в дополнение к localhost (127.0.0.1), если вы хотите получить к ним доступ через контейнер docker-host. Используйте следующую команду docker, чтобы получить IP-адрес сетевого шлюза моста"

Связанный контент