docker容器中的mysql无法通过os x上的已安装卷运行

Yas*_*svi 9 docker boot2docker

在OS X上.

我试图通过boot2docker在docker容器中运行mysql,通过/var/lib/mysql在主机上安装卷,这样我就可以拥有持久的mysql数据.我计划将来使用仅数据容器,但是现在我正在尝试使用此选项.

我使用以下命令来运行容器:

docker run -v /Users/yash/summers/db:/var/lib/mysql -i -t 'image name'

/Users/yash/summers/db文件夹已经存在.

我正面临着这方面的问题.使用命令行,我能够访问该目录,创建/删除新文件,但是当我运行时 service mysql start,我收到以下错误:

150528 15:43:43 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
150528 15:43:43 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
150528 15:43:43 [Note] /usr/sbin/mysqld (mysqld 5.5.43-0ubuntu0.14.04.1) starting as process 909 ... 
150528 15:43:43 [Warning] Setting lower_case_table_names=2 because file system for /var/lib/mysql/ is case insensitive
150528 15:43:43 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.150528 15:43:43 [Note] Plugin 'FEDERATED' is disabled.
/usr/sbin/mysqld: Table 'mysql.plugin' doesn't exist
150528 15:43:43 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
150528 15:43:43 InnoDB: The InnoDB memory heap is disabled
150528 15:43:43 InnoDB: Mutexes and rw_locks use GCC atomic builtins
150528 15:43:43 InnoDB: Compressed tables use zlib 1.2.8 
150528 15:43:43 InnoDB: Using Linux native AIO
150528 15:43:43 InnoDB: Initializing buffer pool, size = 128.0M
150528 15:43:43 InnoDB: Completed initialization of buffer pool
150528 15:43:43  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name ./ibdata1
InnoDB: File operation call: 'create'.
InnoDB: Cannot continue operation.
150528 15:43:44 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended 
Run Code Online (Sandbox Code Playgroud)

我曾试图解决这个在过去的2天后,经历了那么多的页面会这样,这个这个.

我无法解决我的问题.我想我无法完美地做出解决方案的建议.

根据我的理解,这些页面上列出了一些解决方法,包括更改uid和guid,但我认为它们没有得到很好的解释.

任何人都可以向我解释一个详细的解决方法.

更新1:我尝试使用仅数据容器,仍然面临同样的问题.

如果我不使用任何-v--volumes-from选项,我能够运行一切正常,所以我认为在mysql服务器中没有问题.

更新2: 用于创建仅数据容器的Dockerfile:

FROM ubuntu

RUN mkdir /var/lib/mysql

VOLUME /var/lib/mysql
Run Code Online (Sandbox Code Playgroud)

Aar*_*ron -1

我同样遇到了这个问题;我通过在数据容器内 chmod/chown'ing 解决了这个问题,例如:

FROM ubuntu

# Create data directory
RUN mkdir -p /data /var/lib/mysql
RUN chmod -R 777 /data /var/lib/mysql
RUN chown -R root:root /data /var/lib/mysql

# Create /data volume
VOLUME /data
VOLUME /var/lib/mysql
Run Code Online (Sandbox Code Playgroud)

我相信这是有效的,因为 UFS 现在可以正确记录权限,而不是依赖直接从主机挂载来执行此操作,正如您所发现的,这在 OS X 上不起作用