Docker:以非 root 用户身份将日志文件发送到 /dev/stdout

Docker:以非 root 用户身份将日志文件发送到 /dev/stdout

我正在尝试启动一个 docker 容器,它有 2 个服务。其中一项服务需要以非 root 用户身份运行,否则他将无法启动。另一个必须以 root 身份运行。

现在我想将non_root_service.log文件链接到/dev/tty/dev/stdout,以便 docker 可以捕获日志(使用 进行检查docker logs $CONTAINER):

ln -s /dev/stdout non_root_service.log

问题是这样做时,非 root 用户无权写入/dev/tty/dev/stdout导致非 root 服务启动时出现以下错误:

cannot open "non_root_service.log": Permission denied

但如果我不创建链接,我将无法捕获日志docker logs $CONTAINER。有谁知道如何解决这个问题,以便我可以以非 root 身份运行用户并将日志文件链接到/dev/{tty,stdout}

PS:无论我使用 shell 脚本CMD ["starter.sh"]还是主管CMD ["supervisord", "-n", "-c", "/app/supervisord.conf"]来启动这两个服务,我都会遇到相同的错误。

答案1

也许不是最干净的解决方案,但你可以尝试这个:

tail -f non_root_service.log &

简单地将文件尾部到标准输出并将尾部进程置于后台?您也可以尝试直接尾部到标准输出 p:

ln -s ln -fs /proc/self/fd/1 non_root_service.log

但是,您确定您有权访问 non_root_service.log 文件吗?如果你跑步stat non_root_service.log,你会看到什么whoami

相关内容