DockerのVolumeのアクセス権限の問題について

  • 52
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

Dockerでは -v オプションを用いて、ホストディレクトリをマウントすることができる。

$ docker run -t -i -v /path/to/host-dir:/path/to/guest-dir your/image /bin/bash

ここで、マウントしたディレクトリのアクセス権限は、uid=1000, gid=1000, 755 となっており、
変更することはできない。

$ ls -l /path/to/
drwxr-xr-x   1 1000 1000      544 Feb 19 02:23 guest-dir
$ chown root /path/to/guest-dir
$ ls -l /path/to/
drwxr-xr-x   1 1000 1000      544 Feb 19 02:23 guest-dir
$ chmod 777 /path/to/guest-dir
$ ls -l /path/to/
drwxr-xr-x   1 1000 1000      544 Feb 19 02:23 guest-dir

つまり、マウントしたディレクトリに書き込めるのは、rootuid=1000 のユーザだけである。

これによって問題になるのは、例えば次のケースである。

  • Dockerコンテナ上にMySQLサーバーを構築し、かつデータを永続化する為に、ホストディレクトリを /var/lib/mysql にマウントする

ここで、デフォルトの設定のままだと、デーモンの動作ユーザが mysql なので rootuid=1000 のユーザに変更する必要がある。

my.cnf
[mysqld]
# user = mysql
user = 1000 # or root