Настройка контейнера Docker для работы с локальной базой данных

Я пытаюсь настроить контейнер Docker для работы с локальной базой данных.

Это изображение https://hub.docker.com/r/tuxgasy/dolibarr/ и оно также предлагает создать mariadb контейнер, и связать его с этим.

Я хотел бы настроить контейнер Dolibarr для использования вместо mariadb база данных, которая у меня уже есть в моей основной системе, которая была установлена ​​из основного репозитория моего дистрибутива.

Это первый раз, когда я пытаюсь настроить работающее приложение Docker, и я не настолько опытен в обслуживании базы данных, поэтому я немного растерялся.

Как я могу это сделать? Пожалуйста, держите инструкции и объявления четкими и подробными, насколько это возможно.

Моя система - полностью обновленный openSUSE Tumbleweed.

4 ответа

Есть три способа:

  1. Используйте параметр --net=host. Этот сетевой режим означает, что контейнер имеет прямой доступ к localhost, и теперь вы можете получить доступ к localhost:3306. Вот команда

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

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

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

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

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

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

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

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

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

связь

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

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

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

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

Другие вопросы по тегам