docker容器里添加中文字体-微软雅黑字体

前言

在服务端生成图片,图片上的字体需要可以展示中文字体的这样一个需求,但是由于我们容器里面没有中文字体,所以中文显示不出来,显示乱码的情况。然后开发就给我提了一个需求,想让他的这个项目在部署所有环境的时候,docker容器里自动安装一个中文字体,字体是微软雅黑的。

处理步骤:

1.准备中文字体-微软雅黑

首先到容器里查询一下,确实没有字体。那我就得准备字体然后拷贝到容器里。

1、windows下有很多字体可以拿来使用,在C:\Windows\Fonts文件夹下找到需要安装的字体

mac的字体在/System/Library/Fonts文件夹下,里面有很多字体可以使用。下面是在mac的目录下的所有字体,可以根据自己的电脑操作系统来进行查找。

在这里插入图片描述

2、上传到linux操作系统中

2、给系统安装字体管理

由于镜像是基于alpine系统的,所以需要基于alpine来安装字体管理。先临时在pod内操作一遍,测试没问题了在写在Dockerfile里。以下操作都是在对应服务的pod内来执行的。

# 更新源
apk update
# 安装font-adobe-100dpi软件
apk add font-adobe-100dpi
# 创建文件
mkdir /usr/share/fonts/win

3、拷贝中文字体文件到对应服务的pod中

kubectl cp yahei.ttf pod_name:/usr/share/fonts/win/yahei.ttc

4、刷新字体管理器

进入到pod内,对文件赋权限

chmod 777 /usr/share/fonts/win/simsun.ttc

5、刷新,查看

# 刷新
fc-cache -f
# 查看所有字体
fc-list

6、测试字体是否正常显示

测试没有问题,图片字体正常显示,其他字体也是一样的操作步骤。

7、写到Dockerfile

写到Dockerfile里,保证部署所有环境都可以正常显示

Dockerfile在原有的基础上添加如下内容

#添加中文字体
RUN apk update  && apk --no-cache add font-adobe-100dpi 
RUN mkdir /usr/share/fonts/win  
ADD yahei.ttf  /usr/share/fonts/win/yahei.ttf
RUN chmod 777 /usr/share/fonts/win/yahei.ttf  \
    && fc-cache -fv  && fc-list
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
默认情况下,只有 root 用户才能使用 `--privileged` 参数启动 Docker 容器,因为该参数会让容器拥有访问宿主机系统资源的特权。如果使用普通用户启动容器,会提示权限不足的错误。 不过,您可以通过配置 Docker 守护进程来允许普通用户启动特权容器。具体来说,您需要将普通用户添加到 `docker` 用户组中,并将 Docker 守护进程配置为允许该用户组的成员使用特权容器。 具体操作步骤如下: 1. 将普通用户添加到 `docker` 用户组中: ``` sudo usermod -aG docker your_username ``` 其中,`your_username` 是您要添加到 `docker` 用户组中的用户名。 2. 编辑 Docker 配置文件 `/etc/docker/daemon.json`,配置容器运行时的默认参数: ``` { "default-runtime": "nvidia", "runtimes": { "nvidia": { "path": "nvidia-container-runtime", "runtimeArgs": [] } }, "runcmd": [ "/usr/sbin/sysctl -w kernel.perf_event_paranoid=-1" ], "max-concurrent-downloads": 10, "max-concurrent-uploads": 10, "iptables": true, "ipv6": true, "userns-remap": "default", "experimental": true, "features": { "buildkit": true }, "group": "docker" } ``` 其中,`group` 参数设置为 `docker`,表示允许属于 `docker` 用户组的成员使用 Docker。 3. 重新启动 Docker 守护进程: ``` sudo systemctl daemon-reload sudo systemctl restart docker ``` 4. 使用普通用户身份启动特权容器: ``` docker run --privileged -it bcc-image ``` 现在,普通用户已经可以使用特权容器了。需要注意的是,使用特权容器会增加安全风险,需要谨慎使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值