GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Tidak dapat menjalankan NGINX Docker karena "13:Izin ditolak"

Masalahnya

Wadah buruh pelabuhan NGINX dimulai menggunakan perintah di bawah ini:

# docker run --detach --name nginx_server nginx
4ffbcd5ee796b8cce3f2c6ed4cce8927d2b13a040af07b36f7a866b2157290e8

Tetapi pengguna gagal mendapatkan koneksi ke server NGINX. Setelah pengguna memecahkan masalah ditemukan di bawah log kesalahan:

# tail -f /var/log/audit/audit.log
type=AVC msg=audit(1565283160.116:316): avc: denied { write } for pid=2387 comm="nginx" name="nginx" dev="dm-0" ino=140648937 scontext=system_u:system_r:container_t:s0:c345,c550 tcontext=system_u:object_r:container_share_t:s0 tclass=dir permissive=0
type=SYSCALL msg=audit(1565283160.116:316): arch=c000003e syscall=83 success=no exit=-13 a0=56247859585f a1=1c0 a2=0 a3=8 items=0 ppid=2371 pid=2387 auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 comm="nginx" exe="/usr/sbin/nginx" subj=system_u:system_r:container_t:s0:c345,c550 key=(null)
# docker logs nginx_server
2019/08/08 16:52:40 [emerg] 1#1: mkdir() "/var/cache/nginx/client_temp" failed (13: Permission denied)
nginx: [emerg] mkdir() "/var/cache/nginx/client_temp" failed (13: Permission denied)

Solusinya

Pesan penolakan AVC menunjukkan container_t bukan domain permisif, oleh karena itu tidak mungkin untuk menulis (13:Izin ditolak). Untuk mengatasi masalah ini, tambahkan container_t di SELinux.

# semanage permissive -a container_t
# semodule -l | grep permissive
permissive_container_t (null)
permissivedomains (null)

Coba lagi untuk menjalankan wadah nginx menggunakan -p pilihan. Dengan -p, dimungkinkan untuk mengarahkan ulang port dari buruh pelabuhan ke host (pastikan firewall dikonfigurasi dengan benar di host).

# docker run --detach --name nginx_server -p 8080:80 nginx
2ce7b13f17c8aeaaa0e6f434ce47a16f6ed7bf94affb7f75381636fe7fdf496c

Verifikasi apakah buruh pelabuhan sedang berjalan:

# docker ps -a
CONTAINER ID   IMAGE   COMMAND                   CREATED         STATUS         PORTS                  NAMES
2ce7b13f17c8   nginx   "nginx -g 'daemon of…"    3 seconds ago   Up 3 seconds   0.0.0.0:8080->80/tcp   nginx_server

Hubungkan ke wadah NGINX dan verifikasi versi nginx.

# docker exec nginx_server nginx -v
nginx version: nginx/1.17.2


Docker
  1. Cara Menjalankan Nginx dalam Wadah Docker:Panduan Langkah demi Langkah

  2. Pengantar Kontainer Docker

  3. kesalahan perintah 'gambar buruh pelabuhan' - "Izin Ditolak"

  1. -bash:./configure:Izin Ditolak?

  2. Cara Menjalankan MySQL Dalam Wadah Docker

  3. Jalankan Docker sebagai pengguna non-root

  1. Cara Memperbaiki Docker Permission Denied Error di Ubuntu

  2. Git tidak dapat membuat izin file ditolak

  3. Izin ditolak dengan bash.sh untuk menjalankan cron