10544


色々検索してみたものの、同種の問題が見つけられなかったので質問いたします。

vagrantで構築したCoreOSにホストとの共有フォルダを設定し、公式のmysqlコンテナを実行させようとしているのですが、どうしても上手く構築ができません。

ホストにある `mysql` ディレクトリを `/home/core/share/` 以下にマウントした状態で次のコマンドを実行すると、

[code]

    $ docker -run -v /home/core/share/mysql:/var/lib/mysql mysql
    
[/code]

起動途中でパーミッションが変更できないというエラーが表示されていまいます。

[code]

    FATAL ERROR: Could not chown directory /var/lib/mysql/
    
[/code]

`-v`
オプションの指定先を、共有フォルダ以外のパスに指定した場合は問題なく最後まで起動しました。CoreOS内でアクセス権限の変更も試してみましたが、解決しません。

[code]

    # やったけど解決せず
    $ chown core:core /home/core/share/mysql
    
[/code]

  * Vagrantfileは公式のものからファイル共有部分をコメントアウト(124行目)して作成しています。  
<https://github.com/coreos/coreos-vagrant/blob/master/Vagrantfile>

  * ホストはMacOSX Yosemiteにvagrantとvirtualboxをインストールしています。

もしかして、共有フォルダに直接永続化データを作成するような使い方はできないような仕組みになっているのでしょうか…?


CC BY-SA 3.0
2015-04-19T15:56:16.427
9320
2015-05-23T15:20:02.790
2015-04-19T16:31:04.393
9386
9386
question
mysql macos vagrant docker coreos
仮想マシン上のCoreOSで、dockerの永続化データをホストとの共有フォルダに作成できず、権限エラーとなってしまう


ホストがOS Xとのことで、ちょっと触ったことがないので確かなことは言えませんが、  
windowsとcentOSの場合でも、パーミッションの問題はよくあるので、環境の問題かもしれませんね。  
本来であればデータの永続化は可能です。だた、昔PATH(/usr/local/bin等)をマウントしようとしたときに私も失敗したような気がします。  
mysqlの実データをマウント、ということ自体あまりよくないようがしますので、コンテナ作成時にポートフォワードしてはいかがですか？

ホスト側でmysqlが起動しているのであればdockerからポートフォワードで接続できます。

[code]

    docker -run -v /home/core/share/mysql:/var/lib/mysql mysql -p 13306:3306
    
[/code]

実際の接続はdockerに接続してから

[code]

    mysql -u root --port=13306 database
    
[/code]


CC BY-SA 3.0
2015-04-20T04:40:25.037
9332
2015-04-20T04:40:25.037
8396
9320
answer


自己解決したので報告します。

CoreOSのVagrantfileに書いてあるファイル共有設定では、プロトコルとしてNFSが使用されます。(この場合はMacOSXのnfsdを使用)

NFSを使ったファイル共有では、クライアント側からはchownできません。  
そのため、どうしてもchownが必要な場合、次の2つのアプローチのいずれかをとる必要があるようです。

  * NFSサーバ側で、dockerコンテナ側のUID/GIDに合わせてあらかじめオーナーを変更しておく
  * dockerコンテナ側のUID/GIDを、NFSサーバ側のオーナーに合わせて構成しておく

既存のdockerコンテナの構成をいじるのは面倒なので、前者のアプローチを採用しました。

公式のmysqlコンテナの場合、普通に起動すると/var/lib/mysql以下のオーナーは 999:999
になっている為、MacOSXのターミナル上で共有したいフォルダへあらかじめ`$chown -R 999:999
target`をしておきます。この状態でmysqlコンテナを立ち上げたところ、問題なく初期化処理を通過することができました。


CC BY-SA 3.0
2015-05-23T15:20:02.790
10544
2015-05-23T15:20:02.790
9386
9320
answer