Контейнер Docker Percona (mysql mariadb) останавливается после запуска в Ubuntu, когда определен том (-v)

В Ubuntu 16.04 с Docker 17.05.0-ce я пытаюсь настроить образ докера percona-mysql с отображением директории хоста (тома). Вот изображение:

docker pull percona/percona-server:latest

А вот команда запуска контейнера:

docker run --name percona -e MYSQL_ROOT_PASSWORD=secret -v /home/myuser/db/files:/var/lib/mysql -p 6603:3306 -d percona/percona-server:latest mysql -h docker_host_ip -P 6603

Проблема в том, что контейнер сразу останавливается после этой команды - но когда я не использую -v ... параметр (объем сопоставления), то контейнер запускается без проблем. Как решить эту проблему?

Эта проблема также может быть связана с изображениями mysql или mariadb.

1 ответ

Решение

Введите следующие команды на вашем хосте:

cd /home/myuser/db
sudo chown 1001:0 files

Затем снова запустите контейнер и все:)

Путь

  1. После неудачного запуска я смотрю логи: docker logs percona и видим, что у mysql нет прав на запись в dir /var/lib/mysql
  2. Я запускаю контейнер без объема: docker run --name percona -e MYSQL_ROOT_PASSWORD=secret -p 6603:3306 -d percona/percona-server:latest mysql -h docker_host_ip -P 6603
  3. Я вхожу в контейнер: docker exec -it percona /bin/bash
  4. Я печатаю: cd /var/lib
  5. После выполнения ls -l я вижу возле mysql dir следующую строку: drwxr-xr-x 5 mysql root 4096 Oct 6 14:39 mysql, Это означает, что владелец mysql и группа root,
  6. Я получаю UID пользователя mysql id -u mysql (Я получаю 1001)
  7. Я проверяю groups mysql этот mysql имеет одну группу (root). Так что для получения root GID я набираю id -g mysql (Я получаю 0)
  8. chown Команда позволяет установить UID файла:GID даже для пользователей, которых не существует (!), поэтому нам не нужно создавать пользователя mysql на хосте. Так что после запуска chown ... на хосте, в папке files иметь точно такого же пользователя и группу, которые ожидают в контейнере mysql.
Другие вопросы по тегам