ちょっとハマッたので覚え書き。
Dockerでホストのディレクトリをマウントし、サブディレクトリやファイルを作成したところ、それらの所有者がホストに存在しないユーザになっていた。僕はこのホストのルート権限をもらっていないので、これらのファイルを削除するためには管理者に依頼する必要がある。管理はアウトソースしているので、それは面倒な話だ。
1 2 3 4 5 6 7 8 |
$ 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も既に削除してしまっている。どうしたものかと思案した挙句、コンテナでシェルを実行したらルートユーザで接続されたので、そこでファイルの削除を試みたら成功。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ 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でホストのディレクトリを操作するときには権限に気をつけよう。