Linux与Docker的时区
# Linux主机同步网络时间
- 手动同步一次机器时间
yum install -y ntpdate && ntpdate -u ntp1.aliyun.com
1
- 加入Linux定时任务执行
echo "*/20 * * * * /usr/sbin/ntpdate -u ntp1.aliyun.com >/dev/null &" >> /var/spool/cron/root
1
# Linux和docker容器的时区不一致
date -R //查看linux主机时间和时区
docker exec [container] date -R // 查看容器时间和时区
1
2
2
# 解决方法:
- 利用Dockerfile创建镜像时。在Dockerfile中加入
ENV TIME_ZONE=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TIME_ZONE /etc/localtime && echo $TIME_ZONE > /etc/timezone
1
2
2
- 容器创建时。加入时区挂载选项:-v /etc/localtime:/etc/localtime,例如:
docker run -d -p 6379:6379 -v /etc/localtime:/etc/localtime --name test-redis redis
1
- 容器已启动时
docker exec -it 容器名 /bin/bash
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
docker restart 容器名
docker exec 容器名 date -R
1
2
3
4
2
3
4
举个例子: 解决一个容器的和Linux时区不一致问题:
//1、把当前宿主机的时区信息复制到一个容器中 docker cp /usr/share/zoneinfo/Asia/Shanghai 容器名称或Id:etc/localtime //2、重启服务即可 docker restart 容器名称或Id
1
2
3
4
5
编辑 (opens new window)
上次更新: 2023/05/30, 06:56:38