要将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