如何修改Docker容器日期时区并获取更新时间的运行容器Shell
Docker容器内修改日期与时区的解决方案
问题场景
在运行中的Docker容器内执行日期修改命令:
root@691e271b0e6f:/# date -s 2023-12-01
出现权限错误提示:
date: cannot set date: Operation not permitted Fri Dec 01 00:00:00 UTC 2023
预期执行后可成功修改系统日期,无权限报错。
修改容器日期的解决方法
Docker容器默认与主机共享系统时钟,不具备修改时间的权限。要让容器能够修改自身时间,可通过以下方式配置:
启动容器时添加权限
启动容器时添加--cap-add SYS_TIME参数,仅赋予容器修改时间的必要权限:docker run -d --cap-add SYS_TIME [镜像名称]若需更高权限(不推荐,权限范围过大),可使用
--privileged参数:docker run -d --privileged [镜像名称]容器启动后进入终端,即可正常执行
date -s命令修改日期。调整运行中容器的配置(需重启)
若容器已在运行,先停止容器:docker stop [容器ID/名称]找到容器的配置文件(通常位于
/var/lib/docker/containers/[容器ID]/config.v2.json),在CapAdd数组中添加"SYS_TIME",或者将Privileged字段设为true。修改完成后重启容器:docker start [容器ID/名称]
修改容器时区的方法
若需调整容器时区,可选择以下几种简便方式:
- 启动时挂载主机时区文件
直接复用主机的时区配置:docker run -d -v /etc/localtime:/etc/localtime:ro [镜像名称] - 通过环境变量指定时区
启动容器时设置TZ环境变量:docker run -d -e TZ="Asia/Shanghai" [镜像名称] - 进入容器后手动配置时区
以Debian/Ubuntu系列镜像为例,先安装时区管理工具:
可通过交互式命令选择时区:apt update && apt install -y tzdata
或直接复制对应时区文件完成配置:dpkg-reconfigure tzdataln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime echo "Asia/Shanghai" > /etc/timezone
内容的提问来源于stack exchange,提问作者Harsha G V
相关产品推荐
相关产品推荐

