docker容器时区配置

avatar
作者
筋斗云
阅读量:0

 1、共享主机localtime配置时区 

[root@localhost ~]# docker run --name <name> -v /etc/localtime:/etc/localtime:ro ....

创建容器的时候指定启动参数,挂载localtime文件到容器内 ,保证两者所采用的时区是一致的。

2、创建自定义dockerfile配置时区

创建dockerfile文件,其实没有什么内容,就是自定义了该镜像的时间格式及时区。

FROM centos

#设置时区

ENV TZ Asia/Shanghai

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime

保存后,利用docker build命令生成镜像使用即可。

3、使用-e TZ="Asia/Shanghai"参数创建容器

[root@localhost ~]# docker run -e TZ="Asia/Shanghai" -d -p 80:80 --name nginx nginx

注:只有在构建镜像配置了时区参考数,使用此参数才能实现时区的设置。

4、修改容器当前时间

在进行操作的时候,我们先确定下时间错误是什么引起的,是时间错误,还是时区问题。如果只是单纯的时间异常,可以直接使用docker exec -it -u root 24795ac94ae7 /bin/sh 进入自己的容器进行修改就行了。要加-u root不然权限会不足,会提示Permission denied。

然后就是直接使用date 命令修改时间就ok。

4.1使用宿主机时区文件替换容器时区文件

4.1.1确认容器时区和时间

[root@localhost ~]# docker exec -it -u root d45e370417ed bash  #以root身份进入容器

root@d45e370417ed:/# date -R

root@d45e370417ed:/# ls /usr/share/zoneinfo/Asia #确认时区目录是否存在,不存在创建

root@d45e370417ed:/# mkdir -p /usr/share/zoneinfo/Asia

4.1.2从宿主机传送时文件至容器

回到宿主机,复制宿主机里的文件到容器中

[root@localhost ~]# docker cp /usr/share/zoneinfo/Asia/Shanghai d45e370417ed:/usr/share/zoneinfo/Asia/

4.1.3进入容器替换/etc/localtime文件 

[root@localhost ~]# docker exec -it -u root d45e370417ed bash 

root@d45e370417ed:~# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

root@d45e370417ed:~# date -R #查看时区显示时间是否正确

4.1.4重启容器

[root@localhost ~]# docker restart d45e370417

在容器中运行的程序的时间不一定能更新过来,比如在容器运行的MySQL服务,所以需要重启容器。

PS:直接使用宿主机时区文件进行复至容器进行复盖也可以,命令如下:

[root@localhost ~]# docker cp /etc/localtime d45e370417:/etc/localtime

[root@localhost ~]# docker restart d45e370417

4.2通过 -e TZ="Asia/Shanghai"参数重建容器

4.2.1停止容器

[root@localhost ~]# docker stop nginx

4.2.2删除容器

[root@localhost ~]# docker rm nginx

4.2.3通过设置时区参数创建并运行容器

[root@localhost ~]# docker run -e TZ="Asia/Shanghai" -d -p 80:80 --name nginx nginx

4.2.4进入容器shell

[root@localhost ~]# docker exec -it nginx /bin/bash

root@a45e370354ed:~# date -R查看时区

Thu, 17 Nov 2022 14:26:46 +0800

  

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!