Настройка контейнера Docker для работы с локальной базой данных
Я пытаюсь настроить контейнер Docker для работы с локальной базой данных.
Это изображение https://hub.docker.com/r/tuxgasy/dolibarr/ и оно также предлагает создать mariadb
контейнер, и связать его с этим.
Я хотел бы настроить контейнер Dolibarr для использования вместо mariadb
база данных, которая у меня уже есть в моей основной системе, которая была установлена из основного репозитория моего дистрибутива.
Это первый раз, когда я пытаюсь настроить работающее приложение Docker, и я не настолько опытен в обслуживании базы данных, поэтому я немного растерялся.
Как я могу это сделать? Пожалуйста, держите инструкции и объявления четкими и подробными, насколько это возможно.
Моя система - полностью обновленный openSUSE Tumbleweed.
4 ответа
Есть три способа:
Используйте параметр --net=host. Этот сетевой режим означает, что контейнер имеет прямой доступ к localhost, и теперь вы можете получить доступ к localhost:3306. Вот команда
docker run --net=host ... tuxgasy/dolibarr
Затем подключитесь к mariadb с помощью
localhost:3306
Установите гнездо mariadb в док-контейнер и подключите к гнезду mariadb через гнездо. Например, если вы сконфигурируете расположение сокета как /var/run/mysqld/mysqld.sock, вы можете подключить его и использовать в качестве точки подключения.
docker run -v /var/run/mysqld:/mariadb_socket ... tuxgasy/dolibarr
Затем подключитесь к mariadb через разъем
/mariadb_socket/mysqld.sock
из вашего приложенияИспользуйте 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-адрес сетевого шлюза моста"