修改docker时区

在实际业务场景中,经常碰到启动了一个容器,容器的时区是UTC的导致还需要重新运行;

我们在具体处理时也出现了该显现

业务场景: 数据库系统定时备份脚本, 定时备份脚本按照每天备份, 通过k8s启动容器服务来触发备份, 由于容器时间是UTC结果备份开始时间成了早上8点,和预想完全不一致,

同样的问题应该在很多场景中都可能碰到

 

解决方案:

在创建容器镜像的时候在dockerfile 中增加时区相关配置, 命令如下:

ENV TZ=Asia/Shanghai
RUN apt-get install tzdata
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

docker内部时区修改的两种方法

方法一

  1. 终端执行 date命令,查看宿主服务器的时区是否正确
  2. 如果正确: 执行 docker cp /etc/localtime 容器ID:/etc/localtime 将本地时间拷贝到docker内部

方法二

  1. 如果宿主服务器时间本身有问题,可以直接修改宿主机时间,然后执行法一
  2. 也可以直接修改docker内部时区,执行命令:
    • CentOS
      echo “Asia/shanghai” > /etc/timezone;
    • Ubuntu
      cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

如何删除本地docker images镜像

  • 背景
    本地空间较小,想删除无效的docker镜像内容。
  • 操作步骤
    • 查看本地docker镜像
    • 尝试删除本地镜像

      发现无法直接删除镜像
    • 原因分析: 有关联docker容器,无法删除
    • 删除docker容器

    • 删除docker镜像
    • 删除成功