• docker registry镜像容器时区时间同步


      docker registry镜像2.5/2.6版本均基于alpine:3.4制作。若想进入容器可使用 docker exec -it [容器ID等] /bin/sh。

      Alpine Linux Docker镜像基于Alpine Linux操作系统,后者是一个面向安全的轻型Linux发行版。不同于通常Linux发行版,Alpine Linux采用了musl libc和busybox以减小系统的体积和运行时资源消耗。在保持瘦身的同时,Alpine Linux还提供了自己的包管理工具apk。Alpine Linux Docker镜像也继承了Alpine Linux发行版的这些优势。相比于其他Docker镜像,它的容量非常小,仅仅只有5M,且拥有非常友好的包管理器。有消息说Docker官方镜像将会使用Alpine Linux替换Ubuntu。需要注意的是 Alpine Linux使用了musl,可能和其他Linux发行版使用的glibc实现会有些不同,而且musl实现的DNS服务不会使用resolv.conf文件中的search和domain两个配置,通过DNS来进行服务发现时需要注意。

      Alpine Linux Docker镜像中默认是不带时区相关的命令及文件的,需要安装额外的包tzdate来支持。

    方法一 容器内部时区同步

      # docker ps -a                 //查看registry镜像容器Id

        CONTAINERID IMAGE   COMMAND       CREATED     STATUS    PORTS         NAMES

        fc05bb235d29  registry:2   "/entrypoint.sh /etc/"   10 weeks ago    Up 8 weeks   0.0.0.0:5000->5000/tcp   registry-srv

      # docker exec -it  fc05bb235d29   /bin/sh  //进入容器内部,alpine系统使用/bin/sh

      ~ # apk add --no-cache tzdata          //安装时区相关包

      ~ # echo "Asiz/Shanghai" > /etc/timezone

      ~ # ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
      ~ # date
        Mon Aug 28 15:45:37 CST 2017

    方法二 dockerfile修改 镜像构建

    1 修改dockerfile

      #定义环境变量

      ENV  TIME_ZONE Asia/Shanghai
      #dockerfile增加命令
      RUN apk add --no-cache tzdata   //安装tzdata安装包

        && echo "${TIME_ZONE}" > /etc/timezone    //设置时区
        && ln -sf /usr/share/zoneinfo/${TIME_ZONE} /etc/localtime 

    2 宿主机时区及时间检查

    检查宿主机时间及时间是否正确,使用以下命令:

    [root@docker ~]# timedatectl
          Local time: Tue 2016-12-13 21:52:13 EST
      Universal time: Wed 2016-12-14 02:52:13 UTC
            RTC time: Wed 2016-12-14 02:52:13
          Time zone: America/New_York (EST, -0500)  //默认为西五区
        NTP enabled: n/a
    NTP synchronized: no
    RTC in local TZ: no
          DST active: no
    Last DST change: DST ended at
                      Sun 2016-11-06 01:59:59 EDT
                      Sun 2016-11-06 01:00:00 EST
    Next DST change: DST begins (the clock jumps one hour forward) at
                      Sun 2017-03-12 01:59:59 EST
                      Sun 2017-03-12 03:00:00 EDT
    #修改为东八区
    [root@docker ~]# timedatectl set-timezone Asia/Shanghai
     Local time: Wed 2016-12-14 10:53:10 CST
      Universal time: Wed 2016-12-14 02:53:10 UTC
            RTC time: Wed 2016-12-14 02:53:10
          Time zone: Asia/Shanghai (CST, +0800)
        NTP enabled: n/a
    NTP synchronized: no
    RTC in local TZ: no
          DST active: n/a
    [root@docker ~]# date
    Wed Dec 14 10:53:49 CST 2016
    #调整时间
    [root@docker ~]# date -s "2016-12-13 21:54:20"
    #时间同步,不执行则无法生效
    [root@docker ~]# clock -w 
    [root@docker ~]# timedatectl
          Local time: Tue 2016-12-13 22:59:44 CST
      Universal time: Tue 2016-12-13 14:59:44 UTC
            RTC time: Tue 2016-12-13 14:59:44
          Time zone: Asia/Shanghai (CST, +0800)
        NTP enabled: n/a
    NTP synchronized: no
    RTC in local TZ: no
          DST active: n/a
    ```

    至此宿主机时区及时间调整完毕。

    参考文件:Docker系列之(三):Docker微容器Alpine Linux

         解决Docker容器时区及时间不同步问题

  • 相关阅读:
    深拷贝与浅拷贝+可变与不可变的数据类型
    列表+列表循环+列表切片+元祖
    接口+session与cookie的区别+http状态码
    JSP中文乱码问题终极解决方案
    关于AS使用git的那些奇葩事儿
    ListView中动态显示隐藏HeaderView和FooterView
    关于沉浸式的那些奇葩问题
    Android Bug分析系列:第三方平台安装app启动后,home键回到桌面后点击app启动时会再次启动入口类bug的原因剖析
    快速搭建tab
    使用 gradle 在编译时动态设置 Android resValue / BuildConfig / Manifes中<meta-data>变量的值
  • 原文地址:https://www.cnblogs.com/doclove/p/7444426.html
Copyright © 2020-2023  润新知