(共556篇)
全部分类

镜像启动后时间显示错误,怎么设置镜像启动后显示正常的时间
[ Docker ] 

容器在运行后发现date命令打印出来的时间是错的, 与当前时区相差几个小时, 这是因为容器中使用了默认的UTC(世界协调时), 通常讲有三种解决方案

如果容器内已有/usr/share/zoneinfo/Asia/Shanghai文件

在 Dockerfile 中添加如下语句

1
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone

如果容器内没有/usr/share/zoneinfo/Asia/Shanghai文件

如果执行docker build的主机是Linux, 在 Dockerfile 中添加如下语句

1
2
3
# 注意这句, 是先把执行docker build的主机上的时区文件, 拷贝到镜像内
COPY /usr/share/zoneinfo/Asia/Shanghai /usr/share/zoneinfo/Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone

如果执行docker build的主机是MacOS 在 Dockerfile 中添加如下语句

1
2
3
# 注意这句, 是先把执行docker build的主机上的时区文件, 拷贝到镜像内
COPY /usr/share/zoneinfo.default/Asia/Shanghai /usr/share/zoneinfo/Asia/Shanghai
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone

如果执行docker build的主机上没有时区文件

可以考虑挂载