GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

No se puede ejecutar NGINX Docker debido a "13:Permiso denegado"

El problema

El contenedor acoplable NGINX se inició con el siguiente comando:

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

Pero el usuario no pudo conectarse al servidor NGINX. Al solucionar el problema, el usuario se encuentra a continuación en los registros de error:

# 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 solución

Los mensajes de denegación de AVC indican container_t no es un dominio permisivo, por lo tanto no es posible escribir (13:Permiso denegado). Para resolver este problema, agregue container_t en SELinux.

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

Vuelva a intentar ejecutar el contenedor nginx usando -p opción. Con -p, es posible redirigir el puerto desde la ventana acoplable al host (asegúrese de que el firewall esté configurado correctamente en el host).

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

Verifique si la ventana acoplable se está ejecutando:

# 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

Conéctese al contenedor NGINX y verifique la versión de nginx.

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


Docker
  1. Cómo ejecutar Nginx en un contenedor Docker:una guía paso a paso

  2. -bash:./configure:¿Permiso denegado?

  3. Cómo ejecutar MySQL en un contenedor Docker

  4. Introducción a los contenedores Docker

  5. Ejecute Docker como usuario no root

Cómo ejecutar una aplicación .NET en Docker

Cómo ejecutar NGINX Inside Docker (para fácil escalado automático)

Cómo ejecutar PHPMyAdmin en un contenedor Docker

Cómo ejecutar Grafana en un contenedor Docker

Solución de problemas de permiso de Docker denegado

Cómo ejecutar contenedores Docker