====== 2022.03.16 Docker compose Permission denied ====== Docker composeでvoluemsを設定したとき、Permission deniedでアクセスできない場合がある。 ===== docker-compose.yml ===== --- version: '3' services: nginx: image: nginx:latest ports: - "8080:80" volumes: - ./public:/usr/share/nginx/html ===== Permission denied ===== コンテナにログインして見ると対象にPermission deniedでアクセスできない。 もしファイルを直接指定しても、ハテナになってしまいます。 # docker exec -it app-nginx-1 bash root@a107d04ed12b:/# ls -al /usr/share/nginx/html/ ls: cannot open directory '/usr/share/nginx/html/': Permission denied root@a107d04ed12b:/# ls /usr/share/nginx/html/ -al ls: cannot access '/usr/share/nginx/html/index.html': Permission denied total 4 drwxr-xr-x. 2 root root 40 Mar 1 13:59 . drwxr-xr-x. 3 root root 18 Mar 1 13:59 .. -rw-r--r--. 1 root root 497 Jan 25 15:03 50x.html -?????????? ? ? ? ? ? index.html ===== 対応 ===== ==== 1. SElinuxを止める ==== setenforce 0 ==== 2. zを付ける ==== volumes: - ./public:/usr/share/nginx/html:z === Docker マニュアル抜粋 === SELinux のようなラベリング・システムでは、コンテナ内にマウントされたボリュームの内容に対しても、適切なラベル付けが行われます。 ラベルがなければ、コンテナの中の内容物を使って実行しようとしても、セキュリティ・システムがプロセスの実行を妨げるでしょう。 標準では、Docker は OS によって設定されるラベルに対して変更を加えません。 コンテナの内容物に対するラベルを変更するには、ボリュームのマウントにあたり、:z または :Z を末尾に付けられます(接尾辞)。 これらの指定をすると、Docker に対して共有ボリュームが再度ラベル付けされたものと伝えます。 {{tag>Docker 日記}}