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' が存在しません