2019-05-13 docker 自定义系统

问题:项目在k8s上运行时报错 宋体无法识别
百度后发现是服务没有设置字体库

k8s上设置字体库时存在的问题:
打包时使用别人的java8的包,系统是debain,许多shell无法使用,比如expect,而安装字体库需要在安装过程中选择字体,所以无法直接shell操作,在尝试多种操作无果后,选择重新打包个centos

打包自己的centos

1.docker pull centos
拉取镜像
2.docker run -itv mnt /mnt
命令行执行 并将当前目录的mnt挂载到服务器/mnt
在命令行中安装java,设置字体,更新yum ;这些都可以直接百度到
需要的linux文件可以先存放到mnt目录下,方便操作
3.docker commit mycentos
在命令行exit后,docker ps -a 看见运行的镜像变成exited,但是不影响我们打包镜像

坑:在centos中执行的export并不会被一起打包,需要在dockerfile中用env来设置

ENV JAVA_HOME=/jdk8
ENV PATH=$JAVA_HOME/bin:$PATH
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV LANG "zh_CN.UTF-8"
ENV TZ "Asia/Shanghai"

结果:使用新的镜像解决了宋体问题,而且在dockerfile 中可以使用yum等常用操作命令
但是打出的镜像比之前大了许多。。

总结:操作docker 就像是在操作以一个新的系统,很多linux命令我们都可以预置在dockerfile中;
可以用脚本做到完全自动化部署;
一个镜像可以再被打包为另一个镜像,每个镜像就像我们写代码时的一个分支;

你可能感兴趣的:(2019-05-13 docker 自定义系统)