Docker 容器中文乱码解决方案

遇到docker的中文乱码问题

1. vi 打开文件发现中文乱码,这时只需要修改.vimrc文件

cat << EOF > /root/.vimrc
:set encoding=utf-8
:set fileencodings=ucs-bom,utf-8,cp936
:set fileencoding=gb2312
:set termencoding=utf-8
EOF

2. 导入数据库发现中文乱码修改修改数据库文件,需要指定编码格式为中文编码

 echo "set names utf8;" >> abc.sql

3. 设置系统编码格式为中文编码

echo "export.UTF-8" >> /etc/profilesource /etc/profile

4. 深坑!docker centos6.8 容器没有 en_US.UTF-8 语言包!恭喜你,遇到深坑了!!

# 安装 en_US.UTF-8 并配置环境
RUN locale-gen en_US.UTF-8 ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8

# 不要高兴太早, locale-gen命令是没有的。
locale-gen一般用于ubuntu,localedef一般用于centos。
yum remove glibc-common -y
yum install glibc-common -y
localedef -v -c -i en_US -f UTF-8 en_US.UTF-8
localelocale -a

docker的镜像都是阉割版,很多功能都被删除阉割了。
localedef是绑定在 glibc-common 中的,阉割版的镜像中是没有这个命令的,我们需要重新安装glibc-common,首先卸载glibc-common,然后重新安装glibc-common,最后下载自己需要的语言包。
localedef -v -c -i en_US.UTF-8为了使得镜像以后不再出现此坑,要制作镜像的时候指定环境变量

vim /root/cjm/flume/Dockerfile
···
#继承镜像
FROM flume_v1.0
#作者信息
MAINTAINER by cgls
#开始制作
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
CMD ["/root/start.sh"]
···
docker build -t flume_v2.0 /root/cjm/flume/.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值