nginxコンテナをサービスとして実行し、ホストマシンとコンテナ間で2つのボリュームを共有しようとしています。他のペアのディレクトリ。--privileged = true以外の場合、Dockerコンテナ内で "Permission denied"が表示される
マイドッキングウィンドウ-compose.ymlは以下の通りです:
version: '2'
services:
nginx:
image: nginx
build: .
ports:
- "5000:80"
volumes:
- /home/user1/share:/share/user1
- /home/user2/share:/share/user2
restart: always
私は、これは現在仕事を得ることができる唯一の方法は、しかし、私はこれを起因することは許されないのです、ドッキングウィンドウ・コンファイルへprivileged: true
を追加することですセキュリティ要件のために。
コンテナ内のボリュームにアクセスしようとしたとき、私は次のエラーを取得する:
[[email protected] docker-nginx]# docker exec -it dockernginx_nginx_1 bash
[email protected]:/# ls /share/user1/
ls: cannot open directory /share/user1/: Permission denied
はしても、次のパラメータを使用してコンテナにbashに自分自身を取り付けるには、リソース(または少なくともリストにアクセスするの私を拒否する内容):
docker exec -it --privileged=true -u 6004:6004 dockernginx_nginx_1 bash
(注意:6004:6004
はIDであることを起こる:/share/user1/
に渡されるGID所有権)
コンテンツにアクセスする方法はあります昇格された特権でnginx service
を構築することなく?
おそらく問題は、コンテナに強制されるSELinuxの制限にありますか?
コンテナがDebian GNU/Linux 8 (jessie)
実行されていて、ホストがCentOS Linux 7 (Core)
関連の質問実行されている:ドッカーは--selinux-enabled=true
で実行していた
SELinuxに関連していると思うのは、それが 'privileged'フラグで変わるものの1つなのです。 – dnephin
@dnephinあなたは正しいですが、私は古いDockerのバージョンやSELinuxの権限を使っているために2つのリードを持っていました。それはSELinuxだと判明し、デーモンは '--selinux-enabled = true'で実行されました。 –