更改容器的日期和时区,并获取正在运行的容器的 shell,并更新时间和日期

问题描述 投票:0回答:1

要求:更改docker集装箱码头内的日期和时区

假设我希望更改正在运行的容器的系统日期

当尝试运行

date -s 2023-12-01
更改日期但它不起作用并遇到以下错误:

root@691e271b0e6f:/# date -s 2023-12-01  
date: cannot set date: Operation not permitted
Fri Dec 01 00:00:00 UTC 2023

预期行为:

root@691e271b0e6f:/# date -s 2023-12-01  
Fri Dec 01 00:00:00 UTC 2023

root@691e271b0e6f:/# date
Fri Dec 01 00:00:00 UTC 2023

解决方案在这里https://stackoverflow.com/a/77912379/10053482

docker date containers
1个回答
0
投票

解决方案是添加系统功能

SYS_TIME
,同时我们从镜像创建并运行新容器并使用

docker run -it --rm \
   -e TZ=${YOUR_TIMEZONE} \
   --cap-add SYS_TIME \ 
   ubuntu:latest \
   bash -c "date -s 'YYYY-MM-DD HH:MM:SS'; exec bash"

地点:

cap-add SYS_TIME
:允许我们更改容器的系统日期

TZ=${YOUR_TIMEZONE}
:将默认时区覆盖为自定义值


然后在容器shell中,我们可以看到更新系统日期和时区

示例:

docker run -it --rm \ 
   -e TZ="America/Los_Angeles" \
   --cap-add SYS_TIME \ 
   ubuntu:latest \
   bash -c "date -s '2023-10-11 11:11:11'; exec bash"

root@a953bcfa1ab9:/# date
Fri Oct 11 11:11:11 PST 2024
© www.soinside.com 2019 - 2024. All rights reserved.