0

我希望 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

并从这个新的 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

但它错误

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

4

1 回答 1

2

错误消息说没有 mysql 文件可供 mysql 读取。

问题是您在安装 mysql 后挂载分区,因此分区将为空。

解决方案:使用--initialize 或--initialize-insecure 启动mysql

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

于 2016-05-25T22:44:29.397 回答