
cturra/ntp实现。
主要用途:提供轻量级、容器化的NTP服务,用于网络中计算机的时间同步。可作为NTP客户端同步外部时间源,或作为NTP服务器为局域网内其他设备提供时间服务。
本Docker镜像官方支持以下架构,直接从Docker Hub拉取即可自动获取对应架构的镜像:
!Linux x86-64 !ARMv8 64-bit !IBM POWER8 !IBM Z Systems !Linux x86/i686 !ARMv7 32-bit !ARMv6 32-bit
bashdocker pull cturra/ntp
bashdocker run --name=ntp \ --restart=always \ --detach \ --publish=123:123/udp \ cturra/ntp
启用只读文件系统及临时目录挂载,增强容器安全性:
bashdocker run --name=ntp \ --restart=always \ --detach \ --publish=123:123/udp \ --read-only \ --tmpfs=/etc/chrony:rw,mode=1750 \ --tmpfs=/run/chrony:rw,mode=1750 \ --tmpfs=/var/lib/chrony:rw,mode=1750 \ cturra/ntp
使用项目中的docker-compose.yml文件部署(需Docker Engine 19.03.0+,支持Compose格式3.9):
bashdocker compose up -d ntp
bashdocker compose logs ntp
在已配置的Swarm集群中部署:
bashdocker stack deploy -c docker-compose.yml cturra
bashdocker stack services cturra
bashdocker service logs -f cturra_ntp
通过项目中的vars文件配置环境变量,执行构建和运行脚本:
bash./build.sh
bash./run.sh
默认使用CloudFlare时间服务器(time.cloudflare.com)。可通过NTP_SERVERS环境变量指定自定义服务器,支持多个服务器(逗号分隔,无空格)。
--env=NTP_SERVERS="服务器1,服务器2,..."environment中添加NTP_SERVERS: "服务器1,服务器2,..."bash# CloudFlare(默认) NTP_SERVERS="time.cloudflare.com" # Google NTP_SERVERS="time1.google.com,time2.google.com,time3.google.com,time4.google.com" # 阿里云 NTP_SERVERS="ntp1.aliyun.com,ntp2.aliyun.com,ntp3.aliyun.com,ntp4.aliyun.com" # 本地离线模式(使用系统时钟) NTP_SERVERS="127.127.1.1"
默认启用客户端访问日志。设置NOCLIENTLOG=true可禁用日志,同时禁用NTP交错模式支持。
配置方式:--env=NOCLIENTLOG=true
通过LOG_LEVEL环境变量设置日志详细程度,对应chrony的-L选项,支持级别:
0:信息(默认)1:警告2:非致命错误3:致命错误配置方式:--env=LOG_LEVEL=级别
默认使用UTC时区。通过TZ环境变量指定时区(遵循标准TZ数据格式)。
示例(温哥华时区):
yamlenvironment: - TZ=America/Vancouver
当所有配置的NTP_SERVERS均支持NTS时,设置ENABLE_NTS=true启用NTS。
示例:
yamlenvironment: - NTP_SERVERS=time.cloudflare.com - ENABLE_NTS=true
注意:若任何服务器不支持NTS,启动时会提示超时错误(如
NTS-KE session with ... timed out)。
使用ntpdate工具查询容器提供的时间服务(替换<DOCKER_HOST_IP>为容器主机IP):
bashntpdate -q <DOCKER_HOST_IP>
server 10.13.13.9, stratum 4, offset 0.000642, delay 0.02805 14 Mar 19:21:29 ntpdate[26834]: adjust time server 10.13.13.9 offset 0.000642 sec
通过容器内chronyc命令获取详细信息:
bashdocker exec ntp chronyc tracking
bashdocker exec ntp chronyc sources
bashdocker exec ntp chronyc sourcestats
若日志中出现Could not step system clock,是因为chrony以-x选项运行,不修改宿主机时钟(设计如此,需通过NTP客户端从容器同步时间)。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务