1. 程式人生 > 其它 >Docker自定義映象無容器日誌輸出

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可以看到相關日誌。不過重定向後確實解決了我的問題