Docker コンテナ - タッチ: 権限が拒否されました

Docker コンテナ - タッチ: 権限が拒否されました

ここで奇妙な問題が発生していますが、何が間違っているのかわかりません。

私は 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 をオフにすることです。

関連情報