当前位置: 首页 > article >正文

docker中,容器时间和宿机主机时间不一致问题

win11下的docker中有个mysql。今天发现插入数据的时间不正确。后来发现原来是docker容器中的时间不正确。于是尝试了各种修改,什么run -e TZ="${tzutil /g}",TZ="Asia/Shanghai",还有初始化时带--mysqld一类的,都无效。

后来偶然间发现wsl中的docker-desktop中的时间和mysql中的一致,才突然想到,其实容器是运行在docker-desktop这个发行版中的,所以它的环境就是各容器的环境,于是进入docker-desktop,执行:

#在wsl中修改系统时间
date -s "2025-06-03 13:50"

使用date修改为当前时间即可。

/************************************ 又发现点问题,更新一下 *****************************************/

根据上面的修改,改完后,过一会时间又恢复了不正确的时间。初步原因如下:

docker-desktop是基于alpine linux。它直接date -s修改时间后,过一会会自动同步为UTC标准时间。如果查看win平台,会发现win其实是使用了UTC+8,它是在utc的基础上偏移8小时,获得当前区域时间。而docker-desktop只是同步了UTC,而未偏移,这一点使用

# 查看标准硬件时间
hwclock -r

可以发现,它后面的延迟是0,即标准UTC时间,而不是UTC+8。

于是需要将alpine中的时区替换为CST8,这一步中,如果你的网络足够好,可以撑杆跳,那直接安装tzdata即可。如果像我这一样,根本连不上,而wsl中恰好还有一个ubuntu的时候,方案就有了。步骤为:从ubuntu中将/usr/share/zoneinfo/Asia文件夹中的内容,复制到docker-desktop中,再创建一个软链接即可。

# 登陆wsl,注意这里使用root用户,否则就会像我一样,被要求输入一个谁也不知道的密码
wsl -u root
# 登陆后,复制文件
cd /usr/share/zoneinfo/
tar -czvf Asia.tar.gz Asia/
mv Asia.tar.gz /mnt/c/tmp/
exit
# 这样就将Asia.tar.gz复制到c:\tmp文件中了
# 登陆docker对应的linux
wsl -d docker-desktop
mv /mnt/host/c/tmp/Asia.tar.gz /usr/share/zoneinfo #如果没有这个目录,建一个
cd /usr/share/zoneinfo
tar -xzvf Asia.tar.gz 
#复制完成了
# 创建一个链接
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

如果执行完了,都没有报错,则执行date后,会发现时区变为了CST,时间也正确了。

但是!!!容器中的时间和docker-desktop发行版中的时区是独立的。于是创建新的容器


docker run -d --name mysql \-v volume_name:/var/lib/mysql \ # 自己的volume的设置-e MYSQL_ROOT_PASSWORD=root \-e TZ=Asia/Shanghai \   # 这个是关键-p 3306:3306 mysql:8 \--lower-case-table-names=1

然后再select now()查看一下,发现时间一致了。

http://www.lryc.cn/news/2397940.html

相关文章:

  • Unity Shader编程】之高级纹理
  • 类 Excel 数据填报
  • vscode调试stm32,Cortex Debug的配置文件lanuch.json如何写,日志
  • Office文档图片批量导出工具
  • 【iOS】ARC 与 Autorelease
  • 人工智能在智能零售中的创新应用与未来趋势
  • 业务材料——半导体行业MES系统核心功能工业协议AI赋能
  • docker部署命令行 — 启动一个 MySQL 数据库服务 并且把它的数据存储挂载到卷(volume)里
  • 铁电液晶破局 VR/AR:10000PPI 重构元宇宙显示体验
  • 2025年微信小程序开发:AR/VR与电商的最新案例
  • 从零开始,学会上传,更新,维护github仓库
  • #STM32 HAL库实现的STM32F407时钟配置程序以及和STM32F103配置对比
  • 竞争加剧,美团的战略升维:反内卷、科技与全球化
  • (17)课36:窗口函数的例题:例三登录时间与连续三天登录,例四球员的进球时刻连续进球。
  • 高性能分布式消息队列系统(二)
  • Spring 官方推荐构造函数注入
  • 华为OD机试真题——天然蓄水库(2025A卷:200分)Java/python/JavaScript/C++/C语言/GO六种最佳实现
  • 【Harmony OS】数据存储
  • MybatisPlus--核心功能--service接口
  • uniapp调试,设置默认展示的toolbar内容
  • 笔记本电脑开机无线网卡自动禁用问题
  • 推荐一款使用html开发桌面应用的工具——mixone
  • 支持TypeScript并打包为ESM/CommonJS/UMD三种格式的脚手架项目
  • 【云原生开发】如何通过client-go来操作K8S集群
  • 八.MySQL复合查询
  • cacti导出的1分钟监控数据csv文件读取并按5分钟求平均值,然后计算95计费值,假设31天的月份
  • FastMCP vs MCP:协议标准与实现框架的协同
  • AI视频“入驻”手机,多模态成智能终端的新战场
  • nginx+tomcat负载均衡群集
  • DEEPSEEK帮写的STM32消息流函数,直接可用.已经测试