docker 下 alpine 镜像设置时区的有效办法

Posted LightingLYG

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker 下 alpine 镜像设置时区的有效办法相关的知识,希望对你有一定的参考价值。

在使用docker的时候,由于很多基础linux镜像都比较大,alpine这个仅仅几兆的linux基础镜像受到了很多人喜欢,笔者也不例外,可是由于alpine中的一些配置及命令与常见的centos等系统在一些方面不一样,下面来看看时区问题是如何解决的:

原因:alpine中,原生是不带时区相关的命令及文件的,需要安装额外的包来支持,然后需要将时区文件内容替换为localtime文件

解决办法

建议打造自己的alpine基础镜像,如下是我的alpine的Dockerfile:

FROM alpine:3.4
MAINTAINER firewarm LightingLiu <liuyg@liuyingguang.cn>

# Install root filesystem
ADD ./rootfs /

# Install base packages
RUN apk update && apk add curl bash tree tzdata \\
    && cp -r -f /usr/share/zoneinfo/Hongkong /etc/localtime \\
    && echo -ne "Alpine Linux 3.4 image. (`uname -rsv`)\\n" >> /root/.built
# Define bash as default command
CMD ["/bin/bash"]

当这个镜像完成以后,不需要配置任何环境变量即可使用京八区的时区及时间

参考文章

https://bugs.alpinelinux.org/issues/5543

参考的源代码

docker run -it --rm alpine /bin/sh
/ # date
Sun May 8 20:46:18 UTC 2016
/ # apk add -U tzdata
fetch http://dl-cdn.alpinelinux.org/alpine/v3.3/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.3/community/x86_64/APKINDEX.tar.gz
(1/1) Installing tzdata (2015g-r0)
Executing busybox-1.24.1-r7.trigger
OK: 8 MiB in 12 packages
/ # cp /usr/share/zoneinfo/Europe/Berlin /etc/localtime
/ # date
Sun May 8 22:46:45 CEST 2016
/ # 

As a side

以上是关于docker 下 alpine 镜像设置时区的有效办法的主要内容,如果未能解决你的问题,请参考以下文章

alpine镜像时区设置

Docker alpine 添加cst时区并发布镜像到docker.io

Docker openjdk-8-jdk-alpine 容器时间与jdk时区不同修改方法

Docker 时区调整方案

Docker 基础镜像

Docker下alpine镜像安装Latex工具心得