GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Impossible d'exécuter NGINX Docker en raison de "13 :Autorisation refusée"

Le problème

Le conteneur Docker NGINX a été démarré à l'aide de la commande ci-dessous :

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

Mais l'utilisateur n'a pas réussi à se connecter au serveur NGINX. Lors du dépannage, l'utilisateur a trouvé les journaux d'erreurs ci-dessous :

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

Les messages de refus AVC indiquent container_t n'est pas un domaine permissif, il n'est donc pas possible d'écrire (13 :autorisation refusée). Afin de résoudre ce problème, ajoutez container_t dans SELinux.

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

Essayez à nouveau d'exécuter le conteneur nginx en utilisant -p option. Avec -p, il est possible de rediriger le port du docker vers l'hôte (assurez-vous que le pare-feu est correctement configuré dans l'hôte).

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

Vérifiez si le docker est en cours d'exécution :

# 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

Connectez-vous au conteneur NGINX et vérifiez la version de nginx.

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


Docker
  1. Comment exécuter Nginx dans un conteneur Docker :un guide étape par étape

  2. -bash :./configure :autorisation refusée ?

  3. Devriez-vous exécuter une base de données dans Docker ?

  4. Comment réparer l'erreur Docker Permission Denied sur Ubuntu

  5. Exécutez Docker en tant qu'utilisateur non root

Comment exécuter une application .NET dans Docker

Comment exécuter NGINX Inside Docker (pour une mise à l'échelle automatique facile)

Comment exécuter PHPMyAdmin dans un conteneur Docker

Comment exécuter Grafana dans un conteneur Docker

Dépannage des problèmes de refus d'autorisation de Docker

Comment exécuter des conteneurs Docker