使用Docker安装NTP服务器与使用

4,064 阅读2分钟

NTP服务器安装

由于集群机器时间不一致,导致程序频繁出bug,需要使用ntp服务器做时间同步。上周突然接到需求,赶快搞一套上去。

1. 选型

首先先选合适的镜像,由于时间紧迫,直接选用hub.docker上最热门的镜像

image.png

2. 查看官方文档

从文档中发现提供了docker-compose的启动方式,比较方便,所以决定使用docker-compose来启动镜像,docker-compose文件就存放在git仓库里面

image.png

从这里直接进入代码仓库查看代码 image.png

找到docker-compose文件复制到本地进行修改 image.png

首先,build肯定是不需要的,我们不需要重新去构建镜像,直接使用docker仓库里面构建完的镜像即可,其次,上游的ntp服务器要改成国内可用的ntp服务器,最后,加入本地时区即可。 image.png 修改过后的yml文件如下

version: '3.4'
services:
  ntp:
    image: cturra/ntp:latest
    container_name: ntp
    restart: always
    ports:
      - 123:123/udp
    read_only: true
    tmpfs:
      - /etc/chrony:rw,mode=1750
      - /run/chrony:rw,mode=1750
      - /var/lib/chrony:rw,mode=1750
    environment:
      - NTP_SERVERS=ntp1.aliyun.com,ntp2.aliyun.com,ntp3.aliyun.com,ntp4.aliyun.com
      - LOG_LEVEL=0
    volumes:
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro

3. 拉取镜像并启动

将docker-compose.yml拷贝到服务器上面去,先pull已经构建好的镜像,docker pull cturra/ntp。然后docker-compose up -d启动容器

4. 测试

使用另一台机器,执行yum install ntpdate安装ntpdate,然后执行ntpdate ip 命令测试同步是否正常。

1634573429.png 经过测试,ntp服务正常使用并且已经将机器时间同步。

5.使用linux定时任务定时同步时间

  1. 先开启定时任务服务:service crond start。
  2. 使用crontab -e编辑定时任务。新增定时任务格式为:cron[command],保存后:wq退出
    例:*****/usr/sbin/ntpdate 192.168.30.1 >> /opt/app/ntp.log 2>&1