解决Docker容器内时区问题
解决Docker容器内时区问题
秋夜袭雨查看时区
以Jenkins为例
Jenkins容器内时间
1 | date |
宿主机时间
1 | date |
发现两者的时间相差8个小时
- 容器采用了UTC时区,UTC是指(Coordinated Universal Time,标准时间)
- 宿主机采用了CST时区,CST是指(China Shanghai Time,东八区时间)
解决 /etc/localtime (3选1)
一、容器内复制上海时区
1 | cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime |
如果提示
Permission denied
(没有权限),就在命令中加入--user=root
,如:docker exec -it --user=root joplin /bin/bash
二、共享主机的localtime
创建容器的时候指定启动参数,挂载localtime文件到容器内,保证两者所采用的时区是一致的。
- docker命令添加:
-v /etc/localtime:/etc/localtime:ro
- docker-compose添加:
1
2volumes:
- /etc/localtime:/etc/localtime:ro
三、复制主机的localtime
1 | docker cp /etc/localtime jenkins:/etc/ |
此时容器的时间已经设置成和宿主机相同的时间
解决 /etc/timezone
查看当前时区
1 | cat /etc/timezone |
我们需要把UTC改为CST,或者在UTC的基础上加8小时
1 | sed -i 's/UTC/UTC+8/' /etc/timezone |
重启jenkins
1 | docker restart jenkins |
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果