Docker容器内日志中文乱码问题

在使用docker部署java项目后,启动项目,并查看日志,发现日志内中文出现乱码,影响问题排查

原因:容器编码问题

解决方案:设置容器编码

1、查看编码:

首先进入容器中,查看默认的编码格式,如图:

从上图中可以看出,编码格式都是POSIX,此种编码不支持中文

执行locale -a查看所有语言包,如图:

2、修改编码,有如下2中方式:

(1) DcokerFile中增加环境变量

ENV TZ 'Asia/Shanghai' 
ENV LANG en_US.UTF-8 
ENV LANGUAGE en_US:en 
ENV LC_ALL en_US.UTF-8

(2) 如果是通过docker run命令运行,那么可以这样下,如下:

docker run -d \
....
-e LANG=en_US.UTF-8 \
-e LANGUAGE=en_US:en \
-e LC_ALL=en_US.UTF-8 \
....
jdk:1.8

启动后再次进入容器中查看编码,执行命令locale,如图:

并且日志中也可以正常输出中文

也可以在启动容器的时候,指定编码,比如启动chrome/headless-shell,如下:

docker run -d -p 9222:9222 --privileged -e LANG=C.UTF-8  -v /etc/localtime:/etc/localtime  --name chrome-headless chromedp/headless-shell
  • -e LANG=C.UTF-8:支持中文

标签