如何将RBD镜像(ceph)挂载到mysql docker的默认数据目录下
我想mysql读取/写入数据到我的RBD图像。 我使用rbd-docker-plugin从https://hub.docker.com/_/mysql/挂载RBD到docker pull
首先我试试
docker run -it --volume-driver=rbd --volume foo:/mnt/foo ceph/base bash
我在Docker中触摸/ mnt / foo里的“aa”文件,然后停止docker,当我把foo
挂载到另一个docker时,“aa”文件依然存在
然后我将我的代码添加到此Docker文件中
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
并build立,从这个新的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
但是错误
[错误]致命错误:无法打开和locking权限表:表'mysql.user'不存在
错误消息说,没有MySQL文件供MySQL读取。
问题在于你在安装mysql之后挂载了分区,所以分区将是空的。
解决方法:用–initialize或–initialize-insecure启动mysql
http://dev.mysql.com/doc/refman/5.7/en/data-directory-initialization-mysqld.html