我在 Docker 容器中有几个关于时间的问题:
- 做一个 Docker 容器(例如
ubuntu:16.04
(启动时与主机的时间相同? - 如果我不干涉,时间会保持同步吗?
- 如果我更改主机上的时间,容器的时间是 (1( 与开始时间保持同步还是 (2( 与主机保持同步,或者 (3( 未定义或 (4( 其他什么?
- 如果 conset 中的 CRON 作业应该每整小时执行一次 - 是否可以保证它会执行?
我尝试了什么
对于 (1(,看起来好像是这样($
是主机,#
是容器(:
$ docker run -it ubuntu:18.04 bash
# date --iso-8601=s -u
2018-09-11T18:47:04+00:00
$ date --iso-8601=s -u
2018-09-11T18:47:10+00:00
对于 (3(,我尝试用sudo date 080622432018
更改我的本地时间,但我不确定它是否生效。我不确定该命令是否错误,或者只是其他系统将时间快速重置为正确的时间。
如果在 linux 主机上运行以下命令:
cat /sys/devices/system/clocksource/clocksource0/current_clocksource
tsc
您将看到您的内核正在使用(可能和我的一样(TSC 什么是时间戳计数器 (https://en.wikipedia.org/wiki/Time_Stamp_Counter( - 基于 CPU 的准确时间测量(此处链接到内核参数 https://github.com/torvalds/linux/blob/master/Documentation/admin-guide/kernel-parameters.txt#L523(。作为比较,当您基于 KVM 在 VM 中发出该命令时,您将看到 kvm 时钟,它有助于处理与时间和完整操作系统虚拟化相关的问题。
由于 docker 容器是轻量级虚拟化隔离,当您在 docker 容器中运行相同的命令时,您将看到相同的值 - 这意味着容器与主机共享时间。这也意味着容器在没有适当权限的情况下无法更改时间,因为它将更改主机和所有其他容器的时间 - 该权限SYS_TIME (https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities(
回答您的问题:
- 是的
- 是的
- 将与主机相同
- 是的,至少很有可能;)
在docker 容器中导出您的语言环境