Windows Docker 桌面 Linux 模式 - docker 容器时间偏差

Windows Docker Desktop Linux mode - docker container time skew

问题:如何将 docker 容器时间映射到本地 PC 时间以同步 docker 容器内的时间?

来自我的 windows 10 PC,我是 运行ning Linux 模式 docker 桌面版本 2.2.0.4 (43472),docker Engine 19.03 .8.

创建的所有 docker 容器都显示出与主机时间的巨大时间偏差:

来自 centos 8 docker 容器:

[root@/]#日期 5 月 7 日星期四 01:18:16 UTC 2020

来自 docker 主机 运行ning Window Windows 10 PC 上的 Doker 桌面:

PS> 日期

2020 年 5 月 14 日14:42:17

我尝试使用 -v 选项创建一个新容器,如下所示:

docker 容器 运行 -it -v c:\docker_volumes\docker1:/storage -v /etc/localtime:/etc/localtime:ro --name centos7-squid centos:7.7.1908 /bin/bash

我收到以下错误

无法在本地找到图像 'centos:7.7.1908' 7.7.1908:来自 library/centos f34b00c7da20:拉取完整摘要:sha256:50752af5182c6cd5518e3e91d48f7ff0cba93d5d760a67ac140e2d63c4dd9efc 状态:为 centos:7.7.1908 下载了更新的图像 C:\Program Files\Docker\Docker\resources\bin\docker.exe:来自守护进程的错误响应:OCI 运行time create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"rootfs_linux.go: 58: 将 \\"/etc/localtime\\" 安装到位于 \\"/var/lib/docker/overlay2/c7e86cffdc46c354f19b25fa97146ce8f2caee653793219719b043c97040d1b7/merged/usr/share/zoneinfo/UTC\\" 的 rootfs \\"/var/lib/docker/overlay2/c7e86cffdc46c354f19b25fa97146ce8f2caee653793219719b043c97040d1b7/merged\\" 导致 \\ "not a directory\"\"": unknown: 您是否试图将目录挂载到文件上(或反之亦然)?检查指定的主机路径是否存在并且是预期的类型。

我通过设置虚拟机的硬件时钟修复了它 运行ning docker:

docker 运行 --rm --privileged alpine hwclock -s

信用: https://blog.jverkamp.com/2017/11/15/clock-drift-in-docker-containers/