Dockerでvolumeの権限が変わる

Dockerでデータベースのデータを消えないようにホスト側へマウントして使おうとdocker-compose.ymlを用意

$ vim docker-compose.yml

version: '2'                                                                                                                                                                                                 
services:                                                                       
  web:                                                                          
    build: containers/web                                                       
    ports:                                                                      
      - "10080:80"                                                              
    volumes:                                                                    
      - ./www:/var/www/html                                                     
    depends_on:                                                                 
      - db                                                                      
  db:                                                                           
    build: containers/mysql                                                     
    volumes:                                                                    
      - "./datastore/mysql:/var/lib/mysql"  

$ docker-compose build
$ docker-compose up

マウントしていたディレクトリをホスト側で確認してみたら

$ ls -al /datastore/mysql

total 176160
drwxrwxr-x 5 newrelic newrelic     4096  5月  7 12:45 .
-rw-rw---- 1 newrelic newrelic       56  5月  6 16:49 auto.cnf
drwx------ 2 newrelic newrelic    12288  5月  6 19:32 database
-rw-rw---- 1 newrelic newrelic 79691776  5月  7 12:46 ibdata1
-rw-rw---- 1 newrelic newrelic 50331648  5月  7 12:46 ib_logfile0
-rw-rw---- 1 newrelic newrelic 50331648  5月  6 16:49 ib_logfile1
drwx------ 2 newrelic newrelic     4096  5月  6 16:49 mysql
drwx------ 2 newrelic newrelic     4096  5月  6 16:49 performance_schema

と、勝手にownerがnewrelicに!なんでだ、と思って権限を確認してみたら

ホスト側
$ cat /etc/passwd

newrelic:x:999:999:New Relic daemons:/opt/newrelic:/bin/false

コンテナの中
$ cat /etc/passwd

mysql:x:999:999::/home/mysql:/bin/sh

おそらくUIDで判断してるんだと..
データボリュームってのを使うとよさそうです
また今度試します

参考:
Manage data in containers

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください