要将Docker容器中的时间与宿主主机同步,可以使用--volume参数将宿主主机的时间同步到容器中。

首先,确保主机的时间已正确设置为上海的时区。在Linux中,可以使用以下命令来更改时区为上海:

sudo timedatectl set-timezone Asia/Shanghai

然后,在运行Docker容器时,添加以下参数来将主机的时间同步到容器中:

docker run --volume /etc/localtime:/etc/localtime:ro

这将把主机上的/etc/localtime文件映射到容器中,并使用只读模式(ro)进行挂载,以确保容器使用的时间与主机一致。

当容器内部使用date命令时,它将显示与主机相同的时间,并且将受到主机时间的更改的影响。

时间同步设置

容器到主机:docker cp <容器ID或名称>:<容器内文件路径> <主机目标路径>

主机到容器:docker cp <主机文件路径> <容器ID或名称>:<容器内目标路径>


docker cp /etc/localtime 9f953ea6f065:/etc/localtime
docker cp /etc/localtime a4a4fcc9e9fc:/etc/localtime
docker cp /etc/localtime b8f623caeaf1:/etc/localtime
docker cp /etc/localtime 7b49bae90e23:/etc/localtime

docker exec -it 9f953ea6f065 /bin/bash
docker exec -it a4a4fcc9e9fc /bin/bash
docker exec -it b8f623caeaf1 /bin/bash
docker exec -it 7b49bae90e23 /bin/bash

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

date

Q:解决方法是手动创建符号链接。

Error response from daemon: Error processing tar file(exit status 1): invalid symlink “/usr/share/zoneinfo/Etc/UTC” -> “../usr/share/zoneinfo/Asia/Shanghai”

首先,进入容器的shell环境,可以使用以下命令:

docker exec -it <容器ID或名称> /bin/bash

然后,使用以下命令手动创建符号链接:

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

这将创建一个名为/etc/localtime的符号链接,指向/usr/share/zoneinfo/Asia/Shanghai

完成后,退出容器的shell环境,并重新启动容器。现在容器的时间应该与上海的时间同步了。

如果问题仍然存在,请确保主机的时间设置正确,并尝试重新创建容器。

文档更新时间: 2023-08-22 13:06   作者:admin