Docker 同步系统时间问题

查看当前时区

系统时区是通过符号链接 /etc/localtime 到目录中的二进制时区标识符来 配置的/usr/share/zoneinfo

timedatectl

ls检查时区的另一个选项是使用以下命令显示符号链接指向的路径 
ls -l /etc/localtime

说明:
/etc/localtime 和 /etc/timezone 区别

/etc/localtime 使本地时间正确,本机时间(对应linux的date指令正确)
/etc/timezone 使得时区正确,本机所属的时区(对应Java时间正确)

Dockerfile 时区设置

# 设置时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone

Java 时区设置

确保所在主机/etc/timezone内容正确,则不需要再对Java时区进行设置

TimeZone tz = TimeZone.getTimeZone("Asia/Shanghai");
TimeZone.setDefault(tz);

jdk应用,时区为“Etc/UTC”,本机时间改为北京时间,通过java代码中new 出来的时间还是utc时间,所以必须得修正本机的时区
0.

echo 'Asia/Shanghai' >/etc/timezone

使用docker run 设置

-v /etc/localtime:/etc/localtime:ro

-v 标签为容器添加 volume,后面的 :ro 指定该 volume 为只读。

复制时区信息到容器

本机时区正确
docker cp /etc/localtime nginx:/etc/localtime

本机时区不正确
docker cp -L /usr/share/zoneinfo/Asia/Shanghai 【容器名】:/etc/localtime
### Docker Pull 过程中的时间同步问题及解决方案 当遇到Docker pull命令执行缓慢或失败的情况时,除了常见的服务器DNS无法解析和docker源存在问题外,系统时间设置不正确也可能是一个潜在因素。如果主机时间和容器内的时间不同步,可能会引发SSL证书验证错误等问题,进而影响到镜像拉取过程。 对于Ubuntu 20.04及以上版本,在处理这类由时间不同步引起的问题时,可以采取如下措施来确保系统的日期/时间配置准确无误: #### 配置NTP服务以保持时间同步 安装`ntp`包可以帮助维持本地计算机与时钟服务器之间的一致性。通过定期调整系统时钟,减少由于时间差异带来的各种麻烦[^1]。 ```bash sudo apt-get update && sudo apt-get install ntp -y ``` 启动并启用NTP服务,使其随操作系统自动运行: ```bash sudo systemctl start ntp sudo systemctl enable ntp ``` 检查当前的网络时间协议(NTP)状态,确认客户端已成功连接至远程时间服务器: ```bash ntpq -p ``` #### 修改Docker守护程序配置文件实现更精确控制 为了进一步提高准确性,可以在Docker守护进程级别指定额外参数用于强制使用特定的时间服务器进行同步操作。编辑位于 `/etc/docker/daemon.json` 的JSON格式配置文件,加入下面所示的内容(注意替换为你自己的首选NTP服务器地址): ```json { "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" }, "exec-opts": ["native.cgroupdriver=systemd"], "dns": ["8.8.8.8", "8.8.4.4"], "default-ulimits": {"nofile":{"Name":"nofile","Hard":65535,"Soft":65535}}, "time": "pool.ntp.org" } ``` 重启Docker服务使更改生效: ```bash sudo systemctl restart docker ``` 完成上述步骤之后再次尝试执行docker pull命令应该能够有效改善因为时间不同步所造成的各类异常状况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值