docker 下 alpine 镜像设置时区的有效办法
在使用Docker的时候,由于很多基础linux镜像都比较大,alpine这个仅仅几兆的linux基础镜像受到了很多人喜欢,笔者也不例外,可是由于alpine中的一些配置及命令与常见的centos等系统在一些方面不一样,下面来看看时区问题是如何解决的:
原因:alpine中,原生是不带时区相关的命令及文件的,需要安装额外的包来支持,然后需要将时区文件内容替换为localtime文件
解决办法
建议打造自己的alpine基础镜像,如下是我的alpine的Dockerfile:
1 FROM alpine:3.4 2 MAINTAINER firewarm LightingLiu <liuyg@liuyingguang.cn> 3 4 # Install root filesystem 5 ADD ./rootfs / 6 7 # Install base packages 8 RUN apk update && apk add curl bash tree tzdata \ 9 && cp -r -f /usr/share/zoneinfo/Hongkong /etc/localtime \ 10 && echo -ne "Alpine Linux 3.4 image. (`uname -rsv`)\n" >> /root/.built 11 # Define bash as default command 12 CMD ["/bin/bash"]
当这个镜像完成以后,不需要配置任何环境变量即可使用京八区的时区及时间
参考文章
https://bugs.alpinelinux.org/issues/5543
参考的源代码
1 docker run -it --rm alpine /bin/sh 2 / # date 3 Sun May 8 20:46:18 UTC 2016 4 / # apk add -U tzdata 5 fetch http://dl-cdn.alpinelinux.org/alpine/v3.3/main/x86_64/APKINDEX.tar.gz 6 fetch http://dl-cdn.alpinelinux.org/alpine/v3.3/community/x86_64/APKINDEX.tar.gz 7 (1/1) Installing tzdata (2015g-r0) 8 Executing busybox-1.24.1-r7.trigger 9 OK: 8 MiB in 12 packages 10 / # cp /usr/share/zoneinfo/Europe/Berlin /etc/localtime 11 / # date 12 Sun May 8 22:46:45 CEST 2016 13 / #
posted on 2017-02-05 13:43 ilinux_one 阅读(1593) 评论(0) 编辑 收藏 举报