要求:更改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
解决方案是添加系统功能
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