
ここで奇妙な問題が発生していますが、何が間違っているのかわかりません。
私は Linux ボックス (Ubuntu 16.04 LTS) 上の Docker コンテナ内ですべてを実行しています。
docker run -ti --rm promregator/promregator:0.2.1 /bin/bash
(注:画像は から公開されていますhub.docker.com
)。コマンド
docker version
(ホスト側)戻り値
Client:
Version: 1.12.3
API version: 1.24
Go version: go1.6.3
Git commit: 6b644ec
Built: Wed Oct 26 22:01:48 2016
OS/Arch: linux/amd64
Server:
Version: 1.12.3
API version: 1.24
Go version: go1.6.3
Git commit: 6b644ec
Built: Wed Oct 26 22:01:48 2016
OS/Arch: linux/amd64
コンテナ内に次のようなファイルを作成します。
promregator@6a68713fafc9:/$ cd /opt/promregator
promregator@6a68713fafc9:/opt/promregator$ touch test
touch: cannot touch 'test': Permission denied
(promregatorは、イメージがデフォルトで実行されるユーザーです)。
- ディレクトリはイメージから直接取得され、ボリュームマップされていません。
ディレクトリは同じユーザーによって所有されており、権限は 0750 です。
promregator@6a68713fafc9:/opt/promregator$ ls -al total 34348 drwxr-x--- 2 promregator promregator 4096 Apr 1 01:00 . drwxr-xr-x 5 root root 4096 Mar 20 01:01 .. -rw-r----- 1 promregator promregator 35159385 Apr 1 00:59 promregator.jar -rwxrwx--- 1 promregator promregator 642 Apr 1 00:57 promregator.sh
数値的には、ユーザーは1000
promregator@6a68713fafc9:/opt/promregator$ ls -aln . total 34348 drwxr-x--- 2 1000 1000 4096 Apr 1 01:00 . [...]
また、まったく同じ操作が以下でも機能することに注意してください/home/promregator
。
promregator@6a68713fafc9:/opt/promregator$ cd /home/promregator
promregator@6a68713fafc9:~$ touch test
promregator@6a68713fafc9:~$ ls -al .
total 8
drwx------ 2 promregator promregator 4096 Apr 7 11:45 .
drwxr-xr-x 4 root root 4096 Apr 7 11:45 ..
-rw-r--r-- 1 promregator promregator 0 Apr 7 11:45 test
promregator@6a68713fafc9:~$ ls -aln .
total 8
drwx------ 2 1000 1000 4096 Apr 7 11:45 .
drwxr-xr-x 3 0 0 4096 Apr 7 11:45 ..
-rw-r--r-- 1 1000 1000 0 Apr 7 11:45 test
コンテナをrootとして実行すると、
docker run -ti --rm -u root promregator/promregator:0.2.1 /bin/bash
最初の場所にファイルを作成できます:
root@eb29fa8acb95:/# cd /opt/promregator/
root@eb29fa8acb95:/opt/promregator# touch test
これは、ユーザーに何か「異常」があることを示していますpromregator
。
別のホスト(イメージのsha1 idを比較しました)では、コンテナがで起動された場合、ファイルは期待どおりに作成されますdocker run -ti --rm promregator/promregator:0.2.1 /bin/bash
。そのホストのバージョン情報は、
Client:
Version: 17.12.0-ce
API version: 1.35
Go version: go1.9.2
Git commit: c97c6d6
Built: Wed Dec 27 20:11:19 2017
OS/Arch: linux/amd64
Server:
Engine:
Version: 17.12.0-ce
API version: 1.35 (minimum version 1.12)
Go version: go1.9.2
Git commit: c97c6d6
Built: Wed Dec 27 20:09:54 2017
OS/Arch: linux/amd64
Experimental: false
何かアイデアやヒントなどはありますか?私にとって、これは一体何なのでしょうか?
前もって感謝します!
答え1
今日、同じ問題に遭遇しました。私の解決策は、「setenforce 0」で selinux をオフにすることです。