如何将RBD映像(ceph)挂载到mysql docker的默认数据目录

时间:2015-10-14 09:31:40

标签: mysql docker ceph

我希望mysql读/写数据到我的RBD图像。我使用rbd-docker-plugin将RBD从https://hub.docker.com/_/mysql/

挂载到docker pull中

首先我尝试

docker run -it --volume-driver=rbd --volume foo:/mnt/foo ceph/base bash

然后我在docker中触摸/ mnt / foo中的“aa”文件然后我停止了docker,当我将foo挂载到另一个docker时,“aa”文件仍然存在

然后我将我的代码添加到此Docker file

RUN mkdir -p /mnt/foo/mysql
RUN sed -i -e 's/\/var\/lib\/mysql/\/mnt\/foo\/mysql/g' /etc/mysql/my.cnf
VOLUME /mnt/foo/mysql

并构建,从这个新的Dockerfile运行docker

docker run -it --volume-driver=rbd --volume storage2/foo:/mnt/foo -e MYSQL_ROOT_PASSWORD=password [image_id]

当我执行容器时,我可以使用mysql,我在/ mnt / foo / mysql中看到mysql(和“aa”文件)的数据,但当我停止docker并将foo挂载到另一个docker时我看不到任何关于mysql(但我仍然看到“aa”文件)

最后我试试

docker run --name some-mysql --volume-driver=rbd --volume foo:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql

但是错误

  

[ERROR]致命错误:无法打开和锁定权限表:表   'mysql.user'不存在

1 个答案:

答案 0 :(得分:2)

错误消息显示mysql没有要读取的mysql文件。

问题是你在安装mysql之后挂载分区,所以分区将是空的。

解决方案:使用--initialize或--initialize-insecure

启动mysql

http://dev.mysql.com/doc/refman/5.7/en/data-directory-initialization-mysqld.html