Docker容器时区和语言设置问题集合

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/learner198461/article/details/82798349

在使用docker情况下因为docker镜像上的时区和语言和宿主机不一样,为了解决这个问题。首先要了解docker上的镜像系统,

查看系统命令cat /etc/issue 或cat /etc/redhat-release。

如果和宿主机一样的系统可以使用 -v参数把时区和语言映射,举例

docker run -it -p -v /etc/localtime:/etc/ imagesid

也可以使用

docker cp /etc/localtime containerid:/etc/

使用上述方法需要宿主机和docker里面系统是一致的。

也可以使用自定义DOCKERFILE文件方法

写法

FROM java:8-jre

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

这对centos和unbuntu没有问题,其它linux系统写法有

1、docker run -e TZ=Asia/Shanghai 

2、tzselect timeconfig dpkg-reconfigure tzdata

使用Alpine Linux的docker镜像,那不能在原有镜像上修改,只能自定义image

修改Dockerfile文件内容

增加安装tzdata包
#定义环境变量
ENV  TIME_ZONE Asiz/Shanghai
#dockerfile增加命令
#安装tzdata安装包
&& apk add --no-cache tzdata \  
#设置时区
&& echo "${TIME_ZONE}" > /etc/timezone \ 
&& ln -sf /usr/share/zoneinfo/${TIME_ZONE} /etc/localtime \

或者

apk add -U tzdata
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

最后java程序会遇到日志里的时间还是没有调整过来,这和虚拟机有关

运行java程序时候加入JVM参数 -Duser.timezone=GMT+08 指定时区

猜你喜欢

转载自blog.csdn.net/learner198461/article/details/82798349