Docker 下修改ElasticSearch 容器时区不成功

ElasticSearch 容器时区默认为UTC,想修改为CST,利用以下命令进行修改

docker exec -it -u root 容器id bin/sh
mkdir -p /usr/share/zoneinfo/Asia
exit
docker cp /usr/share/zoneinfo/Asia/Shanghai 容器ID:/usr/share/zoneinfo/Asia
docker exec -it -u root 容器id bin/sh
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
刚开始使用:cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime会报错
cp: cannot stat '/usr/share/zoneinfo/Asia/Shanghai': No such file or directory
改为ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime执行没有报错,但也没有执行生效。

img

请各位指点看看是什么 原因。

在修改ElasticSearch容器的时区时遇到问题,以下是可能导致问题的几个原因和解决方法:

容器内没有安装tzdata或时区信息文件:确保容器内安装了tzdata包或其他包含所需时区信息的软件包。可以使用命令apk add tzdata来安装。

容器内的文件路径不正确:确认容器内的文件路径是否正确。在执行docker cp命令时,确保源文件的路径/usr/share/zoneinfo/Asia/Shanghai是存在的,并且在执行ln -sf命令时,目标文件的路径/etc/localtime也是正确的。

容器内时间同步问题:在修改时区后,可能需要重新启动ElasticSearch容器或确保容器内的时间与宿主机的时间同步。可以尝试重启容器,或者使用命令docker cp /etc/localtime 容器ID:/etc/localtime来同步时间。

请注意,对于特定的Docker镜像和环境设置可能会有所差异,以上解决方法可能需要根据您的具体情况进行调整。另外,建议在操作之前备份容器,以防止意外情况发生。如仍无法解决问题,建议查看Docker容器的日志以获取更多详细信息。

用ls命令先看看 /usr/share/zoneinfo/Asia/Shanghai 这个文件是否存在