之路 on it Road.com
解决方案
AVC 拒绝消息表明 container_t 不是许可域,因此无法写入(13:权限被拒绝)。
为了解决这个问题,在SELinux中添加container_t。
# semanage permissive -a container_t # semodule -l | grep permissive permissive_container_t (null) permissivedomains (null)
再次尝试使用 -p 选项运行 nginx 容器。
使用 -p,可以将端口从 docker 重定向到主机(确保在主机中正确配置了防火墙)。
# docker run --detach --name nginx_server -p 8080:80 nginx 2ce7b13f17c8aeaaa0e6f434ce47a16f6ed7bf94affb7f75381636fe7fdf496c
验证 docker 是否正在运行:
# 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
连接到 NGINX 容器并验证 nginx 版本。
# docker exec nginx_server nginx -v nginx version: nginx/1.17.2
问题
使用以下命令启动 NGINX docker 容器:
# docker run --detach --name nginx_server nginx 4ffbcd5ee796b8cce3f2c6ed4cce8927d2b13a040af07b36f7a866b2157290e8
但是用户无法连接到 NGINX 服务器。
在进行故障排除后发现以下错误日志:
# 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)
日期:2020-09-17 00:16:28 来源:oir作者:oir