问题背景:

在使用docker部署项目的时候,由于项目中调用打印控件默认使用的是系统字体,在windows上部署没有问题,但是在docker容器中运行的时候,由于docker中没有宋体等相关字体,导致系统报错无法找到相应的字体。

解决思路:

其实就像解决linux本身没有宋体的问题一样,也可以用来解决容器问题。发现其实很多docker容器的问题最后都可以仿照linux的解决思路来处理。大体就是下载宋体ttf、ttc文件,然后将其考入容器字体目录下,重启容器即可。

解决办法:

1、查看容器支持的字体。

fc-list :lang=zh

当看到下列情况,说明没有安装字体管理,需要安装字体

2、安装字体库。

yum -y install fontconfig

安装完成后,在/usr/share目录下就能看到fontconfig、fonts文件夹,如图:

3、将下载下来的字体ttc、ttf文件拷贝到容器的/usr/share/fonts文件中。

cp simsun.ttc 容器:/usr/share/fonts

cp simsun.ttf 容器:/usr/share/fonts

4、然后重启容器,就可以看到安装的中文字体。

5、也可以将此步骤写到Dockerfile中,在构建镜像的时候自动实现。

补充:Docker | Docker容器中安装中文字体 和 更改 utf-8 编码(解决中文乱码问题)

1. 项目背景

开发团队反馈,在项目运行中,使用 pagoffice 和 使用 word 转 pdf 会出现乱码,针对这一问题,进行解决,做此记录,用以回顾。

2. 问题分析

使用 pagoffice 和 使用 word 转 pdf 出现乱码有两个问题,对应关系为:

pagoffice ---- 未使用 UTF-8 编码,部分 docker 容器中默认为 POSIX。

word2pdf ---- Liunx 中未安装中文字体缺失,linux及docker容器中默有部分中文,或无中文字体。

综上所述,要想彻底解决容器乱码问题,则需要解决:1.使用 utf-8 ,支持中文; 2.安装中文字体。

3. 解决方案

3.1. 使用 UTF-8 编码,支持中文

3.1.1 使用C.UTF-8编码

使用C.UTF-8编码能够支持中文的,官网上的docker镜像是支持并默认是C.UTF-8编码。

locale -a

#查看容器所有语言环境

locale

#查看容器使用的语言环境

如果使用的镜像不是C.UTF-8编码,则可以更改为此编码格式,在运行容器时添加以下参数:

-e export LANG="C.UTF-8"

3.1.2 其他方案

也可以在 docker 启动的时候,加上参数。

-e export LANG="zh_CN.UTF-8"

但是我使用的是docker官网的镜像,使用参数后,确实是设置使用了"zh_CN.UTF-8",但是没有进行安装。会有报错:

locale

#查看设置的字符集

locale: Cannot set LC_CTYPE to default locale: No such file or directory

locale: Cannot set LC_MESSAGES to default locale: No such file or directory

locale: Cannot set LC_ALL to default locale: No such file or directory

LANG=zh_CN.UTF-8

LC_CTYPE="zh_CN.UTF-8"

LC_NUMERIC="zh_CN.UTF-8"

LC_TIME="zh_CN.UTF-8"

LC_COLLATE="zh_CN.UTF-8"

LC_MONETARY="zh_CN.UTF-8"

LC_MESSAGES="zh_CN.UTF-8"

LC_PAPER="zh_CN.UTF-8"

LC_NAME="zh_CN.UTF-8"

LC_ADDRESS="zh_CN.UTF-8"

LC_TELEPHONE="zh_CN.UTF-8"

LC_MEASUREMENT="zh_CN.UTF-8"

LC_IDENTIFICATION="zh_CN.UTF-8"

LC_ALL=

locale -a

#查看安装的字符集

locale: Cannot set LC_CTYPE to default locale: No such file or directory

locale: Cannot set LC_MESSAGES to default locale: No such file or directory

locale: Cannot set LC_COLLATE to default locale: No such file or directory

C

POSIX

en_US.utf8

3.2. 安装中文字体,显示中文

3.2.1 查看现有字体

查看Linux目前的所有字体

fc-list

查看Linux目前的所有中文字体

fc-list :lang=zh

3.2.2 获取其他字体

在 windows 系统中,字体存在于 C:\Windows\Fonts 下。复制后,打上传到 Linux 服务器 /opt/software/chinese 中(我是要在docker容器中安装字体,如果要在linux主机中安装字体,则直接放在服务器的 /usr/share/fonts/ 文件夹下)。

3.2.2 容器安装字体

docker ps -a

#查看容器

docker cp /opt/software/chinese tomcat:/usr/share/fonts/

#tomcat为容器名称

docker exec -it tomcat /bin/bash

#进入容器

chmod 644 -R chinese/

授权文件夹

fc-list :lang=zh

#查看中文字体

fc-cache -fv

#刷新缓存

3.3. 验证

pagoffice ---- 改动docker 容器后,需要重启容器

word2pdf ---- 刷新字体缓存即可,不需要重启容器

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

linux字体不识别不了怎么办,Docker容器不识别宋体等字体的解决方案相关推荐

  1. Docker容器不识别中文字体问题

    概述: 1. 现象: 使用到宋体时:1.1 中文字体不显示 1.2 或者无宋体时docker容器使用默认系统字体,导致字体大小显示不一致 2. 解决: 2.1 获取字体:windows系统 --> ...

  2. docker删除所有容器_如何在Linux上创建,列出和删除Docker容器

    本篇文章介绍的内容是关于在Linux机器上创建,列出和删除docker容器,下面我们来看具体的内容. 我的官方群点击此处 1.启动Docker容器 使用下面的命令启动新的Docker容器.这将启动一个 ...

  3. Docker容器内不能联网的6种解决方案

    全栈工程师开发手册 (作者:栾鹏) 架构系列文章 Docker容器内不能联网的6种解决方案 注:下面的方法是在容器内能ping通公网IP的解决方案,如果连公网IP都ping不通,那主机可能也上不了网( ...

  4. Docker容器不识别宋体等字体问题

    问题背景: 在使用docker部署项目的时候,由于项目中调用打印控件默认使用的是系统字体,在windows上部署没有问题,但是在docker容器中运行的时候,由于docker中没有宋体等相关字体,导致 ...

  5. mall在Linux环境下的部署(基于Docker容器)

    部署思路 开发人员将开发好的mall电商项目包交给我,我用以下方法来部署运维: 1. Docker环境安装配置 2. MySQL数据库安装配置 3. Redis安装配置 4. Nginx安装配置 5. ...

  6. Linux高级运维 第八章 部署docker容器虚拟化平台

    8.1  Docker概述 实验环境: CENTOS7.4-63 64位 Dcoker概述 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到 ...

  7. 解决:bash: vim: command not found、docker 容器不识别 vi / vim 、docker 容器中安装 vim

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 1. 在 Docker 容器中编辑文件,报错如下: bash: vim: command not f ...

  8. docker容器添加微软雅黑字体

    添加中文字体其实很简单,往容器里COPY一个ttf字体文件就生效了,不需要执行fc-cache. 基于debian 8的tomcat容器,Dockerfile: COPY msyh.ttf /usr/ ...

  9. Docker容器处于Removal in process 无法删除解决方案

    在正常情况下执行docker rm会将容器删除,但是如果容器处于Removal in process状态下,执行docker rm会出现:remove /mnt/docker/devicemapper ...

  10. 在Linux和Windows的Docker容器中运行ASP.NET Core

    译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott Hanselman就捷足先登了.那么我就来翻译一下这篇文章,让更多的中文读者看到.当然Scott遇到的坑我也遇 ...

最新文章

  1. ORB_SLAM2程序入口(System.cc)
  2. 新病毒仿熊猫烧香 利用 Vista系统漏洞疯狂传播
  3. u盘安装linux双系统6,用U盘安装Centos6.5 + Win7 双系统
  4. 数据库视频总结二(Transact-SQL语言)
  5. 设计模式(五)--工厂模式汇总
  6. mysql 三级联动_c#+Mysql 实现三级联动
  7. js数组往队头添加数据、js数组从队头移出数据
  8. vscode 文件夹中查找_真香!使用 VSCode 进行远程开发调试
  9. Num37 spring 事务 ssh整合
  10. 数据可视化软件有什么特点
  11. solr6.5的分词
  12. redis和couchbase的比较
  13. Python_机器学习_常用科学计算库_第5章_Pandas
  14. HTML中如何修改提示文字,html中input提示文字样式修改
  15. 民进自强进修学院 计算机,#民进自强#中复班学生周记摘录
  16. ①、iOS-RxSwift基础控件的使用、RxSwift-Tableview的使用、RxSwift-SectionTableview结合RxDataSources使用、RxSwift 网络请求封装使用
  17. oracle的安装教程
  18. 执行董事和CEO有什么区别
  19. Java下载文件时文件名出现乱码(但文件内容正常)
  20. THC温湿度测控系统---系统分析与设计

热门文章

  1. 跨模态检索 | Visual Representation Learning
  2. getrusage-进程资源统计函数
  3. a1708硬盘转接口_macbook pro2017 a1708转接卡更换大容量硬盘,Apple/苹果笔记本电脑_好文分享_优购 - 荐优,购适...
  4. FSMC驱动TFT显示屏(和驱动触摸屏)
  5. Vulkan学习(四):Shader加载 管线设置
  6. Qt 中大尺寸图片的处理
  7. 网络显示404是怎么回事?
  8. python批量删除txt文本前面几行和最后几行
  9. 协同办公笔记软件综合评测:飞书、语雀、Notion、FlowUs、Wolai
  10. 参考文献中英文人名_参考文献英文人名的缩写规则