docker 容器中文亂碼

遇到docker的中文亂碼問題有兩處

vi打開文件發現中文亂碼,修改

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/.

你可能會喜歡