GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Impossibile eseguire NGINX Docker a causa di "13:Permesso negato"

Il problema

Il contenitore della finestra mobile NGINX è stato avviato utilizzando il comando seguente:

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

Ma l'utente non è riuscito a connettersi al server NGINX. Al momento della risoluzione dei problemi, l'utente ha trovato i registri degli errori di seguito:

# 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)

La soluzione

I messaggi di rifiuto AVC indicano container_t non è un dominio permissivo, quindi non è possibile scrivere (13:Permesso negato). Per risolvere questo problema, aggiungi container_t in SELinux.

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

Riprova a eseguire il contenitore nginx utilizzando -p opzione. Con -p, è possibile reindirizzare la porta dalla finestra mobile all'host (assicurarsi che il firewall sia configurato correttamente nell'host).

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

Verifica se la finestra mobile è in esecuzione:

# 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

Connettiti al container NGINX e verifica la versione di nginx.

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


Docker
  1. Come eseguire Nginx in un contenitore Docker:una guida passo passo

  2. Introduzione ai contenitori Docker

  3. Esegui Docker come utente non root

  4. Autorizzazione negata con bash.sh per eseguire cron

  5. Perché il contenitore docker richiede Autorizzazione negata?

Come eseguire un'app .NET in Docker

Come eseguire NGINX Inside Docker (per un ridimensionamento automatico semplice)

Come eseguire PHPMyAdmin in un contenitore Docker

Come eseguire Grafana in un contenitore Docker

Risoluzione dei problemi relativi all'autorizzazione Docker negata

Come eseguire i contenitori Docker