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
可以看到相关日志。不过重定向后确实解决了我的问题