【问题标题】:Permission denied when writing logs in Docker在 Docker 中写入日志时权限被拒绝
【发布时间】:2023-04-07 19:28:02
【问题描述】:

我试图在 Ubuntu 20.04 上写一个 Docker 日志文件

sudo docker logs CONTAINER_ID >output.log

但它返回了

-bash: output.log: Permission denied

如何解决保存日志的权限问题?问题是在容器内部还是外部?

附:我有这个容器docker run -d -v ~/desktop/usercode/Docker:/code -p 5000:5000 flask_app:1.0,Dockerfile如下:

## Base Python Image for App
FROM python:3.9-rc-buster


# Setting up Docker environment
# Setting Work directory for RUN CMD commands
WORKDIR /code
# Export env variables.
ENV FLASK_APP app.py
ENV FLASK_RUN_HOST 0.0.0.0
###


#Copy requirements file from current directory to file in
#containers code directory we have just created.
COPY requirements.txt requirements.txt

#Run and install all required modules in container
RUN pip3 install -r requirements.txt

#Copy current directory files to containers code directory
COPY . .

#RUN app.
CMD ["flask", "run"]

而且,图像是:

REPOSITORY   TAG             IMAGE ID       CREATED          SIZE
flask_app    1.0             90b2840f4d5d   29 minutes ago   895MB
python       3.9-rc-buster   50625b35cf42   9 months ago     884MB

【问题讨论】:

标签: linux docker unix docker-container docker-logs


【解决方案1】:

您输入的命令首先创建output.log 文件,方向与您相同,然后删除该文件中的日志;用下面的命令好像问题就解决了。

 docker logs CONTAINER_ID > ~/output.log

此命令在您所在用户的根路径中创建一个日志文件。例如,如果您的用户名是 USER1,则该文件在 /home/USER1 中创建

【讨论】:

  • 谢谢。这有助于保存日志文件。那么我的命令的问题是先创建的output.log不能编辑?你和我的流程有什么不同?
  • 此外,仅打印part of the logs,而不是终端中显示的整个日志。打印的日志和文件中的日志有区别吗?
  • 你好@chenghuayang 感谢您接受我的回答。如果您想将整个日志打印到此文件,请使用此命令docker logs CONTAINER_ID >> ~/output.log 2>&1
  • 谢谢! 2>&1 是什么意思? (或者是否有一些关于它的文档?我不确定要搜索什么。)
  • 1 用于标准输出(stdout),2 用于标准错误(stderr),2>&1 表示将 stderr 重定向到特定文件,附加 &1 将 stderr 重定向到 stdout。 @程华阳
猜你喜欢
  • 2018-02-20
  • 1970-01-01
  • 2015-08-02
  • 2013-03-19
  • 2021-11-05
  • 2019-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多