许多 docker 镜像没有时区,默认是0时区,对于日志的时间显示,可能不太友好。另外有些镜像无法输出中文,也不太好友。本文以 busybox 为例,尝试解决此类问题。

时区支持

运行busybox:

 docker run -itd --rm --name busybox latelee/busybox
docker exec -it busybox date
Fri Mar 20 05:13:50 UTC 2020docker exec -it busybox cat /etc/localtime
TZif2UTCTZif2UTC
UTC0

查看本地时区文件:

ls -l /etc/localtime
lrwxrwxrwx 1 root root 33 Dec 17 21:50 /etc/localtime -> /usr/share/zoneinfo/Asia/Shanghai
ls -l /usr/share/zoneinfo/Asia/Shanghai
lrwxrwxrwx 1 root root 6 Oct  3 05:06 /usr/share/zoneinfo/Asia/Shanghai -> ../PRC
cat /usr/share/zoneinfo/PRC
TZif2Ӌ{
pMTCDTCST
CST-8

拷贝本地时区文件:

docker cp /usr/share/zoneinfo/PRC busybox:/etc/localtime

查看:

docker exec -it busybox date
Fri Mar 20 13:14:27 CST 2020

如果在 k8s 中

apiVersion: v1
kind: Pod
metadata:name: busybox-pod1labels:app: busybox
spec:containers:- name: busybox1image: latelee/busyboximagePullPolicy: IfNotPresentcommand: ["sh", "-c", "sleep 3600"]volumeMounts:- mountPath: /test111name: host-volume- mountPath: /etc/localtimename: time-zonevolumes:- name: host-volumehostPath: path: /data- name: time-zonehostPath: path: /etc/localtime

字符编码

进入容器,设置环境变量:

export LANG=C.UTF-8
export LANGUAGE=C.UTF-8
export LC_ALL=C.UTF-8

在 Dockerfile 文件中可如此使用:

ENV LANG C.UTF-8
ENV LANGUAGE C.UTF-8
ENV LC_ALL C.UTF-8

设置前后的输出对比:

/ # æ?????
sh: æ??是中文: not found/ # 我是中文
sh: 我是中文: not found

制作

将该容器保存为新的镜像即可。另外可用 Dockerfile 制作。

总结

是否添加支持,取决于实际需求,如果所有基础镜像均是自己维护,建议添加。

我的docker随笔23:修改容器时区和添加中文支持相关推荐

  1. (docker) 四步修改容器时区时间!超简洁明了~

    注意注意注意! Mysql容器不能使用这种方法,会使得mysql容器直接无法启动! mysql容器建立前可以看笔者这篇文章:docker工作实际使用及其离线部署.容器打包(超简单完整保姆级操作)) S ...

  2. docker(五):更新容器映射端口

    文章目录 说明 分享 资料 方案 1.删除原容器,重启新容器 2.修改原容器配置文件 3.生成镜像,新启容器 总结 说明 本博客每周五更新一次. docker容器启动时通过 -p 指定映射端口,但某些 ...

  3. alpine linux docker容器时区修改

    适用对象 使用 Alpine Linux 发行版的 Docker 镜像容器. 仅仅适用于没有安装uclibc的系统. 修改步骤 进入容器命令行 # docker exec -it container_ ...

  4. Docker容器部署项目少了8个小时,问题解决Dockerfile修改linux时区

    Docker容器部署项目少了8个小时,问题解决&&Dockerfile修改linux时区 情景回顾 打包好的jar包通过Dockerfile构建成一个镜像后,通过docker-comp ...

  5. 把AspDotNetCoreMvc程序运行在Docker上-part2:修改容器以及发布镜像

    在上一个part<把AspDotNetCoreMvc程序运行在Docker上-part1>,已经将成功将aspdotnetcore程序运行在两个不同的容器中,目前两个容器的内容完全相同,只 ...

  6. docker修改容器名字

    查看一下容器的名字 这个laughing_elion是下载es时候默认的名字 修改容器名字 docker rename 容器原来名   要改为的名字 最后可以看到容器名已经修改成功

  7. 我的docker随笔8:docker容器相互访问

    很多时候,同一台机器上,需要运行多个docker容器,前文提到的docker-compose就是方便同时管理多个容器的工具,那么,容器与容器之间如何访问.通信呢?本文对此问题进行探讨. 方式一:内部网 ...

  8. 解决Docker容器时区不一致的问题

    解决Docker容器时区不一致的问题 参考文章: (1)解决Docker容器时区不一致的问题 (2)https://www.cnblogs.com/zhi-leaf/p/10604574.html ( ...

  9. Docker 修改容器端口

    Docker 修改容器端口 本文介绍如何修改容器端口 对于已经创建的容器,可以通过下面的方法修改端口: 将容器提交为镜像,重新运行 修改容器配置文件 将容器提交为镜像,重新运行 略 修改容器配置文件 ...

最新文章

  1. 通过7个函数解密区块链(附代码)
  2. nginx 修改并隐藏版本号
  3. 【ARM】ARM体系结构-GPIO
  4. mongodb 如何更改端口号_Centos7配置MongoDB以及端口修改
  5. Android 进程的五种生命周期学习
  6. pycharm下防止鼠标拖拽代码字符
  7. 【使用教程】面向回家编程-12306智能刷票,订票
  8. 安卓设备手柄无法映射线性扳机的解决思路(1)
  9. 网页服务器阿帕奇怎么启动服务,阿帕奇服务器使用教程
  10. ubuntu SSH 链接服务器加代理
  11. 【报告分享】小红书品牌营销白皮书2021半年报-新红数据(附下载)
  12. java实现组织架构
  13. 【ssh连接】解决网络突然断线进程执行中止问题
  14. 自定义安装Office 365(适用于个人版订阅等)
  15. 电脑python如何下载_Python for Windows 32位 v3.7.2下载|Python 3.7.2免费电脑版
  16. com.aliyun.openservices.ons.api.exception.ONSClientException: defaultMQProducer send order exception
  17. 自动补水排气定压机组工作原理
  18. Lucene,Solr,Elasticsearch之间的区别和联系
  19. {转}我们需要什么样的人生
  20. 你“被5G”了吗?5G套餐无法改4G 更有运营商下架4G

热门文章

  1. android xml 焦点,android TV 焦点选中放大效果
  2. 用rest造句子_rest的用法和短语例句
  3. 开启灯光就是近光吗_科目三考前必看!夜间灯光语音模拟+超全项目操作
  4. 由于供不应求 部分新款Apple Watch机型推迟至11月交付
  5. 这67款APP被下架了
  6. 小米平板5有望8月发布:骁龙870+120Hz刷新率屏
  7. 哈苏相机加持!一加9 Pro海外抢先发布:采用120Hz LTPO屏幕
  8. 拼多多股价创历史新高:市值再度逼近京东
  9. 罗永浩签约抖音后,带货首秀或将献给小米,你看好这笔生意吗?
  10. 微信官方回应iOS 13.2频繁杀后台问题:建议先不升级