Docker自定義映象無容器日誌輸出
阿新 • • 發佈:2021-10-19
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
可以看到相關日誌。不過重定向後確實解決了我的問題