栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

使基于CentOS8的Docker镜像支持中文

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使基于CentOS8的Docker镜像支持中文

前言

原本已经在虚拟机中安装了CentOS8虚拟机,现在想在docker中也升级到CentOS8容器(原本是7),本文是以Dockerfile的方式来构建镜像(不推荐基于容器来构建镜像),所以最终是要完成编写Dockerfile。既然CentOS官方有出官方镜像当然简单改改就能跑起来了,但是在启动程序上遇到了中文乱码的问题,源于官方镜像不支持中文。

实现

首先需要设置 LANG 环境变量才能实现中文环境,即:

$locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
......
$export LANG=zh_CN.utf8
$locale
LANG=zh_CN.utf8
LC_CTYPE="zh_CN.utf8"
LC_NUMERIC="zh_CN.utf8"
LC_TIME="zh_CN.utf8"
......

但是只设置LANG环境变量没有安装中文字符集并不能直接支持中文从而出现了乱码,然后按照网络上帮助安装 langpacks-zh_CN 包发现也无法支持中文。然后在虚拟机正常CentOS8系统中根据 strace locale 查看调用得到结论:需要有/usr/lib/locale/zh_CN*目录才能支持中文,进一步查看系统包:
rpm -qa|grep langpack 查出了两个中文支持包:

glibc-langpack-zh-2.28-164.el8.x86_64langpacks-zh_CN-1.0-12.el8.noarch

$rpm -ql langpacks-zh_CN-1.0-12.el8.noarch
/usr/share/metainfo/org.fedoraproject.LangPack-zh_CN.metainfo.xml
$rpm -ql glibc-langpack-zh-2.28-164.el8.x86_64
/usr/lib/locale
/usr/lib/locale/zh_CN
/usr/lib/locale/zh_CN.gb18030
......

可以看出来关键在于安装 glibc-langpack-zh 包才能有 /usr/lib/locale/zh_CN 目录,所以得到最终的Dockerfile关键行:

FROM centos:centos8.4.2105
RUN yum -y install langpacks-zh_CN glibc-langpack-zh && 
	yum clean all
ENV LANG zh_CN.utf8
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/725687.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号