端くれプログラマの備忘録 Docker [Docker] ホストのディレクトリを操作するときには権限に気をつけよう

[Docker] ホストのディレクトリを操作するときには権限に気をつけよう

ちょっとハマッたので覚え書き。

Dockerでホストのディレクトリをマウントし、サブディレクトリやファイルを作成したところ、それらの所有者がホストに存在しないユーザになっていた。僕はこのホストのルート権限をもらっていないので、これらのファイルを削除するためには管理者に依頼する必要がある。管理はアウトソースしているので、それは面倒な話だ。

$ pwd
/home/taro/tmp
$ ls -al
total 16
drwxrwxrwx 4 taro taro 4096 Apr 15 2015 .
drwxrwxr-x 3 taro taro 4096 Oct 5 18:23 ..
drwxr-xr-x 4 48 48 4096 Apr 15 2015 cache  <- ホスト側から消せない
drwxr-xr-x 2 48 48 4096 May 2 2015 logs    <- ホスト側から消せない

一時的な作業だったので、イメージもDockerfileも既に削除してしまっている。どうしたものかと思案した挙句、コンテナでシェルを実行したらルートユーザで接続されたので、そこでファイルの削除を試みたら成功。

$ docker run -it -v /home/taro/tmp:/tmp/shared --rm centos:6.6 /bin/bash
# cd /tmp/shared
# ls -al
total 16
drwxrwxrwx 4 1000 1002 4096 Jan 6 18:56 .
drwxrwxrwt 3 root root 4096 Jan 6 19:04 ..
drwxr-xr-x 4 48 48 4096 Apr 15 2015 cache
drwxr-xr-x 2 48 48 4096 May 2 2015 logs
# rm -r -f cache
# rm -r -f logs
# ls -al
total 8
drwxrwxrwx 2 1000 1002 4096 Jan 6 19:07 .
drwxrwxrwt 3 root root 4096 Jan 6 19:04 ..
# exit
$

Dockerでホストのディレクトリを操作するときには権限に気をつけよう。