2015-12-23 2 views
6

Я нахожусь на своем конце с этим, так что, надеюсь, вы, люди, можете мне помочь. В OSX 10.11.2 с док-машиной у меня есть файл, содержащий докеры, который должен создать локальный файл Docker и прикрепить к нему контейнер MySQL. Контейнер MySQL должен монтировать локальную папку, где я храню данные моей базы данных, поэтому, если контейнер или виртуальная машина опускаются, я могу просто перезапустить его без потери данных. Проблема заключается в том, когда я запускаю его, он выдает ошибку разрешений:Разрешение отклонено при установке Объем докеры в OSX

db_1 | 2015-12-23 19:17:59 7facaa89b740 InnoDB: Operating system error number 13 in a file operation. 
db_1 | InnoDB: The error means mysqld does not have the access rights to 
db_1 | InnoDB: the directory. 

Я попробовал каждую перестановку я могу думать, чтобы получить эту работу. Я читал, и это может быть связано с тем, как docker-machine обрабатывает разрешения с OSX, но в документации для док-машины говорится, что она монтирует папку /Users, поэтому это не должно быть проблемой.

Вот что docker-compose.yml:

web: 
    build: . 
    ports: 
    - "3000:3000" 
    links: 
    - db 
db: 
    image: mysql:5.6 
    ports: 
    - "3306:3306" 
    volumes: 
    - /Users/me/Development/mysql-data:/var/lib/mysql 
    environment: 
    MYSQL_ROOT_PASSWORD: mypass 

Любые идеи? Я не могу не думать, что это действительно просто. Любая помощь была бы очень признательна!

Edit:

  • Host - drwxr-xr-x 7 me staff 238 Dec 23 12:10 mysql-data/
  • VM - drwxr-xr-x 1 docker staff 238 Dec 23 20:10 mysql-data/

Как контейнер, он не будет работать с объемом установлен. Без -v горы, это:

  • Контейнер - drwxr-xr-x 4 mysql mysql 4096 Dec 24 00:37 mysql
+0

Вывод 'ls -lh' для каталога данных во всех трех местах (host, vm, container) был бы полезен для отладки.Я думаю, что, скорее всего, происходит то, что каталог принадлежит root, и не позволяет пользователю mysql создавать новые файлы. – dnephin

+0

@dnephin, я обновил вопрос выше с данными. Это помогает? – greggilbert

ответ

11

Вопрос это происходит от является UserIds, используемые Mac и Linux соответственно. Mac не любит, что Linux хочет использовать 1 для userID.

Как я работал вокруг всех разрешений сумасшествие в моем макинтош + докер-машина установки заключается в использовании этого Dockerfile

FROM mysql:5.6 

RUN usermod -u 1000 mysql 
RUN mkdir -p /var/run/mysqld 
RUN chmod -R 777 /var/run/mysqld 

Вместо простого MySQL 5.6 изображения.

Последние две строки необходимы, поскольку изменение идентификатора пользователя для пользователя mysql испортит сборку разрешений для этого изображения. => вам нужно разрешение 777, чтобы запустить его здесь:/

Я знаю, что это немного взломанное, но до сих пор лучшее решение, которое я знаю, для прав доступа здесь.

+0

Хорошо, так что это помогло! Изображение остается как минимум. Однако я не запускаю его в сокете. Без двух последних строк я получаю следующее: '[ERROR] Не удается запустить сервер: привязать к unix-сокету: разрешено denied' ' [ERROR] У вас уже есть другой сервер mysqld, работающий в сокете:/var /run/mysqld/mysqld.sock? ' И вот тогда. Есть идеи? – greggilbert

+0

Извините, мой плохой. Здесь я немного перемешиваю вещи. Если вы переключаете идентификаторы пользователей, это будет беспорядочно встраиваться в базовые изображения. У пользователя-пользователя 1000 не будет доступа к/var/run/mysqld => вам необходимо настроить это вручную. –

+0

спасибо за примечание. Попытка подключения из связанного контейнера говорит: «ERROR 1130 (HY000): Host '172.17.0.3' не разрешено подключаться к этому серверу MySQL, поэтому я думаю, что, возможно, мне нужно добавить свой собственный' my.cnf' там тоже? – greggilbert

0

Попробуйте использовать последнюю докер для mac вместо инструментов докеров. Docker для Mac больше не использует VirtualBox, а HyperKit - это легкое решение для виртуализации OS X, построенное поверх Hypervisor.framework в OS X 10.10 Yosemite и выше.

Я предлагаю также полностью удалить Docker инструментов (они могут сосуществовать): https://github.com/docker/toolbox/blob/master/osx/uninstall.sh

С докерами для макинтоша, вы не должны использовать разрешение хак, было бы просто работать, как это было бы на Linux строить.

Смежные вопросы