docker更新镜像时区问题

avatar 2022年6月4日18:12:22 评论 332 次浏览

今天在上新服务的时候出现在修改时区的是出现的异常,在镜像中安装tzdata时,因为没有修改源,导致下载的包是在日本的服务器上,一直卡着不动了,偶尔也能下载,但是这种不稳定的根据很是烦人,看我的报错信息如下:

13:27:04 Step 16/19 : RUN apk --update add tzdata &&     cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&     echo "Asia/Shanghai" > /etc/timezone &&     apk del tzdata &&     rm -rf /var/cache/apk/*
13:27:04  ---> Running in 6f523388d293
13:27:04 fetch https://dl-cdn.alpinelinux.org/alpine/v3.13/main/x86_64/APKINDEX.tar.gz
13:35:43 /tmp/jenkins4909649609623717759.sh: line 34: 28707 Terminated              docker build -t ${ServiceName}-${ENV} .
13:35:43 Build was aborted

因为一直卡着不动,所以我手动关闭了,我看dl-cdn.alpinelinux.org的地址是日本的,我就把源换成阿里云的,如下:

RUN echo -e "https://mirrors.aliyun.com/alpine/v3.10/main" > /etc/apk/repositories #更换源
RUN apk --update add tzdata && \
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
    echo "Asia/Shanghai" > /etc/timezone && \
    apk del tzdata && \
    rm -rf /var/cache/apk/*

在更新的过程中就正常了,这是修改镜像时区的第一种方式。也可以

ENV TZ="Asia/Shanghai"

RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo 'Asia/Shanghai' >/etc/timezone \

第二种修改时区的方式是依据宿主机的时区映射到容器里,这样启动的容器时区就会跟着变化

#启动时加入
-v /etc/localtime:/etc/localtime

以上两种都可以修改容器的时区,个人建议还是使用第一种,因为第一种修改是修改容器本身,不受其他的影响,如果第二种宿主机的时间就不准确,容器的时间也是会受影响的。

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: