Docker自定义镜像无容器日志输出

Docker自定义镜像无容器日志输出

因工作环境需要,需自己定制一个python环境的镜像,但制作完之后,docker logs发现无日志输出,经文档查询原来需要将日志重定向到标准输入与标准输出,例子如下:

例子一

FROM env_centos:latest
 
COPY nginx.repo /etc/yum.repos.d/ 
# 注意,日志要重定向输出到stdout,否则无法看到容器日志输出
RUN 
    yum -y install nginx httpd-tools && 
    mkdir -p /data/nginx_conf/upstream && 
    mkdir -p /data/nginx_conf/vhosts && 
    rm -f /etc/nginx/conf.d/default.conf && 
    ln -sf /dev/stdout /var/log/nginx/access.log &&        		> 这2行是关键,当然,这个要跟你的nginx配置文件匹配,不要照搬
    ln -sf /dev/stderr /var/log/nginx/error.log                   > 这2行是关键
 
COPY nginx.conf /etc/nginx/nginx.conf
 
EXPOSE 80
#EXPOSE 443
 
CMD ["nginx", "-g", "daemon off;"]

例子二

FROM ubuntu:latest

RUN apt-get update && apt-get upgrade -y && apt-get install -y build-essential python3 python3-dev python3-pip libssl-dev git
WORKDIR /home/elastalert
ADD  ./*   ./
RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple  elastalert &&  
ln -sf /dev/stdout elastalert.log  && ln -sf /dev/stderr elastalert.log
CMD ["/bin/bash","run.sh"]

注意: 这里有一个疑问,为啥我例子一容器启动后在/dev/目录中可以看到文件映射,但例子二没有看到,但docker logs可以看到相关日志。不过重定向后确实解决了我的问题

原文地址:https://www.cnblogs.com/98record/p/docker-zi-ding-yi-jing-xiang-wu-rong-qi-ri-zhi-shu.html