docker容器改变时区

2023-05-16

    默认情况下的docker容器启动之后,系统时间是UTC时间,这导致和我们的北京时间相差8小时,会引出很多问题。

    有一些容器是和项目一起构建的,我们可以在构建的时候,将系统时区修改为Asia/Shanghai。如下所示,我们在定义Dockerfile的时候,可以直接加上这段指令:

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime; \
    echo 'Asia/Shanghai' >/etc/timezone;

    这样的话,容器构建之后,再启动,就不会有时差问题了。

    有时候,我们的容器是三方提供的,比如elasticsearch服务,mysql服务,mongodb服务等等。可能有的镜像在制作的时候,考虑了时差问题,但是大多数可能并不会考虑。这就需要我们设置时区了,当然,不可能在容器启动之后去设置,这样可以改变系统时间,但是如果服务随着容器启动,服务的时间并不会随着系统时间改变而发生变化。所以,我们改变系统时区就应该在服务启动之前,或者在容器启动时指定。

    改变时区,主要是改变/etc/localtime这个文件。

    确保docker host主机的时间是准确的,可以考虑直接挂载/etc/localtime到宿主机的/etc/localtime,所以我们看到很多这样的设置:

    如果是docker run启动容器,那么会指定-v /etc/localtime:/etc/localtime;

    如果是docker-compose编排容器,那么会指定:

volumes:
  - /etc/localtime:/etc/localtime

   当然,通过这种方式肯定是可以确保时区一致的问题。另外,我根据一些资料,发现可以通过指定环境变量TZ="Asia/Shanghai"的方式来修改时区,比如elasticsearch服务就可以生效。但是busybox就怎么都不生效,只有通过改变/etc/localtime才行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

docker容器改变时区 的相关文章

随机推荐

  • c++中char[]与char*的转换以及char*与数字互转

    在c c 43 43 中 xff0c 字符串操作不可避免 xff0c 而且通常 xff0c char 或者char 就能表示字符串 xff0c 这个跟java语言有很大的差别 xff0c java中char是字符 xff0c string才
  • electron项目构建打包缺少dll文件的问题解决办法

    最近 xff0c 在做electron项目中 xff0c 使用了第三方dll xff0c 开发环境运行一切正常 xff0c 可是当我们打包 xff0c 最后生成的可执行程序再执行 xff0c 发现调用dll总是不成功 xff0c 猜测是少了
  • c/c++中的回调函数

    c c 43 43 中的回调函数是一个很奇怪的东西 xff0c 在java中 xff0c 方法调用的时候 xff0c 参数最多可以传入另一个对象实例 xff0c 然后在方法体内 xff0c 调用实例的方法 xff0c 做不到方法调用的时候
  • 在Windows下配置多个git账号

    本文记录在Windows下配置两个github账号的过程 1 生成并部署SSH key 安装好Git客户端后 xff0c 打开git bash xff0c 输入以下命令生成user1的SSH Key xff1a ssh keygen t r
  • windows命令行下通过cl命令编译动态链接库示例

    一般在windows下写一个c c 43 43 的动态链接库 xff0c 我们都是在visual studio或着visual c 43 43 这些ide里面进行编译和生成的 xff0c 今天介绍 xff0c 如何通过命令行来实现手动编译和
  • gdb命令调试c程序

    一般开发c语言程序 xff0c 都是在ide中编码 xff0c 调试也是使用集成环境 xff0c 有时候 xff0c 我们的程序是在文本编辑器中编写的 xff0c 这时候可能使用gcc编译 xff0c 然后运行可执行程序 遇到需要调试的场景
  • 选择排序算法与示例详解(c语言)

    选择排序是排序算法的一种 xff0c 思想就是 xff0c 每一轮寻找数组中最大的值或者最小的值 xff0c 放在头部或者放入一个新的数组 这样经历一轮遍历 xff0c 数组或者新数组就是排好序的 xff0c 他的目的很明确 xff0c 每
  • 2020年csdn盘点

    十年前就注册了csdn账号 xff0c 之后一直没有写过博客 xff0c 都是看别人的博客 xff0c 等到2015年左右发表了第一篇自己的博客 xff0c 直到2016年底觉着做技术的就需要记录自己的博客 xff0c 不仅是自己学习的过程
  • chrome浏览器安装react-devtools

    react devtools是react开发时的一个浏览器插件 xff0c 对于各大主流高级浏览器都有扩展程序可以安装 xff0c 官方的地址默认是https github com facebook react devtools xff0c
  • react+typescript项目构建

    react项目构建可以很简单 xff0c 但是如果是结合typescript xff0c 其实也不是很麻烦 xff0c 官网也有很明确的说明 有两种办法 xff1a 1 直接构建带有typescript的react项目 xff0c 我们需要
  • react项目启动报错:Uncaught TypeError: Cannot read property ‘forEach‘ of undefined

    如题 xff0c react项目启动报错 xff0c 具体信息 xff0c 如下所示 xff1a 这个问题是因为浏览器安装了react devtools扩展程序导致的 xff0c 很多人的解决办法就是直接禁用react devtools x
  • react组件之间传值

    看过一些文章介绍react组件之间传值 xff0c 无外乎以下几种情况 xff1a 父子组件之间相互传值 xff0c 兄弟节点之间传值 最常见的就是父子组件 xff0c 做法也很简单 xff1a 就是在父组件中直接通过props属性的方式将
  • 利用mocha进行以太坊智能合约编译部署测试

    使用智能合约编程语言solidity编写的智能合约 xff0c 除了可以直接通过以太坊的工具链truffle ganache cli进行测试之外 xff0c 还可以结合mocha进行单元测试 mocha单元测试本质上 xff0c 还是需要对
  • electron报错:Uncaught Error: A dynamic link library (DLL) initialization routine failed

    如题所示 xff0c 我们在进行node 43 electron开发桌面应用的时候 xff0c 经常会遇到这样的问题 xff1a 根据提示是因为ref依赖模块没有合适的编译版本 xff0c 但是我们进行npm install的时候没有报错啊
  • C语言 利用冒泡排序法对10个字符由小到大排序

    span class token macro property span class token directive hash span span class token directive keyword include span spa
  • truffle+ganache-cli构建简单以太坊智能合约并编译部署

    以前接触过以太坊工具链来做区块链练手项目 xff0c 后来荒废了 xff0c 如今再次捡起来 xff0c 算是回忆和加深 之前可能因为网络的原因 xff0c 在truffle各种初始化编译合成智能合约都遇到了好多问题 xff0c 如今再次尝
  • docker-compose搭建mongo+elasticsearch+graylog运行环境

    graylog是一个小型的开源日志收集 分析 展示框架 主要graylog运行需要mongo elasticsearch xff0c 所以他们就组成了一个小的整体 一般在虚拟机上搭建 xff0c 可以分开安装部署 xff0c 但是既然是一个
  • word文档中插入图片显示不全解决办法

    在windows下写word文档 xff0c 正常情况下 xff0c 我们应该不会遇到插入图片显示不全的问题 xff0c 好像是如果在已有的文档中插入图片 xff0c 比如文档中间插入 xff0c 图片没办法自动扩展空间 xff0c 这就导
  • quasar构建linux版本electron项目以及如何让electron程序在linux下运行

    quasar构建 xff0c 默认命令是 xff1a quasar build m electron 如果要支持linux xff0c 通常是直接加参数 target linux或者简写 T linux quasar build m ele
  • docker容器改变时区

    默认情况下的docker容器启动之后 xff0c 系统时间是UTC时间 xff0c 这导致和我们的北京时间相差8小时 xff0c 会引出很多问题 有一些容器是和项目一起构建的 xff0c 我们可以在构建的时候 xff0c 将系统时区修改为A