LINUX.ORG.RU

MariaDB в докере - не могу получить доступ к mysqld.sock

 , ,


0

1

Запускаю так:

docker run --name 10.1.23-mariadb -p 3308:3306 -v /opt/test/mariadb:/var/lib/mysql -v /opt/test/socket:/var/run/mysqld -e MYSQL_ROOT_PASSWORD=password -d mariadb:10.1.23


Не работает. Если убрать монтирование /var/run/mysqld - работает. Но мне нужно иметь доступ к mysqld.sock, т.к. надо делать копии базы через xtrabackup, а ему он нужен.

Подскажите, что с этим делать?

★★★★★

Последнее исправление: Qwentor (всего исправлений: 1)

подожди пару лет. сделают консольную команду make_everything_zaebok.c к ней ман, в котором четенькое описание к твоей проблеме. докер до этого пока недотягивает.

Anoxemian ★★★★★
()
Ответ на: комментарий от Anoxemian

Ваш совет очень важен для меня. Спасибо, очень помогли

Qwentor ★★★★★
() автор топика

Подскажите, что с этим делать?

Зайти в контейнер и посмотреть, во что там превращается сокет. Вдруг, это вообще автоматически созданный каталог на хосте :) И в логи посмотреть, конечно.

А так, конечно, правильно соединяться через сеть. А бэкап лучше делать через репликацию. Благо, она в контейнере, как раз, очень легко делается.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

во что там превращается сокет

Что под этим имеете в виду и как проверить? В контейнер заходил, файл там этот есть. Заранее спасибо

Qwentor ★★★★★
() автор топика
Ответ на: комментарий от Qwentor

В контейнер заходил, файл там этот есть

А, вот это и важно было проверить. А то, например, если файла на хосте нет, то докер сам создаёт одноимённый каталог.

KRoN73 ★★★★★
()
Ответ на: комментарий от KRoN73

Короче так:

echo /var/lib/docker/aufs/diff/$(cat /var/lib/docker/image/aufs/layerdb/mounts/$(docker inspect --format="{{.Id}}" 10.1.23-mariadb)/mount-id)/run/mysqld/mysqld.sock


и получаю прямой путь до сокета

пох, что он может меняться, т.к. это только для теста, да и если будет в реале такая конфигурация - my.cnf можно генерировать скриптом

Qwentor ★★★★★
() автор топика

Очевидно я тупой...

Какой смысл запускать мускул/марию в докере, если и данные лежат на хосте, и, судя по задаче, используется оно тоже на хосте, а ставится оно из стандартных реп одной командой? Ну ок, из нестандартных двумя - надо предварительно добавить репу.

MumiyTroll ★★★
()
Ответ на: комментарий от MumiyTroll

Смысл в том что там уже стоит мускуль. А этот второй, другой версии. Итого 2 на разных портах. Вообще, как-то наверно и без докера можно. Но как? И целесообразно ли, когда есть докер?

Qwentor ★★★★★
() автор топика
Ответ на: комментарий от Qwentor

Вообще, как-то наверно и без докера можно. Но как?

Сделать chroot-окружение и туда поставить нужную версию. Потом уже chroot/lxc/systemd-nspawn по вкусу.

И целесообразно ли, когда есть докер?

Если цель - пердолиться с докером, то конечно нет.

Deleted
()

Не работает

docker container logs 10.1.23-mariadb и ты бы увидел Permission denied на директорию с unix-сокетом.

deadNightTiger ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.