Windows环境下运行Ubuntu 18.04 Linux容器时间不一致的离线解决方案求助
Windows环境下运行Ubuntu 18.04 Linux容器时间不一致的离线解决方案求助
我之前在Windows 10上跑Ubuntu 18.04容器时也碰到过这种时间差的问题,尤其是离线环境下没法随便联网装包,确实头疼。给你几个亲测有效的离线解决思路,你可以试试:
修改Docker镜像,提前固化时区配置(推荐离线场景)
如果你是自己构建镜像,完全可以在Dockerfile里加入离线时区配置步骤,不用每次运行容器都折腾:# 设置对应主机的时区环境变量,比如你主机是UTC+2就改成Europe/Paris,根据实际情况调整 ENV TZ=Asia/Shanghai # 提前把Windows主机的时区文件(或者对应Linux时区文件)复制到Dockerfile同目录 COPY ./localtime /etc/localtime RUN echo $TZ > /etc/timezone这里的
localtime文件你可以从Windows主机导出,或者在有网的Ubuntu机器上复制/usr/share/zoneinfo/Asia/Shanghai(对应你的时区)到离线环境,构建镜像时完全不需要联网,之后运行容器就不会有时间差了。不重构镜像,运行容器时指定时区并挂载本地时区文件
你之前用挂载没生效,大概率是Windows下Docker的路径映射问题——直接写/etc/localtime其实指向的是Docker Desktop内部的文件,不是Windows主机的。试试用Windows本地路径挂载,同时加上时区环境变量:# 替换成你主机对应的时区,比如UTC+2就设Europe/Paris docker run -it --rm -e TZ=Asia/Shanghai -v "C:\Windows\System32\config\systemprofile\AppData\Local\Microsoft\Windows\Time Zone\localtime:/etc/localtime:ro" myimage bash如果担心路径权限问题,也可以先把Windows主机的时区文件复制到本地一个文件夹,再挂载这个文件夹,确保离线环境下文件能正常访问。
离线安装tzdata包配置时区
要是你不想改镜像也不想调整挂载路径,可以先在联网环境下下载Ubuntu 18.04对应的tzdata deb包,比如tzdata_2024a-0ubuntu0.18.04_all.deb,把它传到离线环境后,在容器里执行以下命令(全程离线):# 非交互式安装,避免弹窗 DEBIAN_FRONTEND=noninteractive dpkg -i tzdata_2024a-0ubuntu0.18.04_all.deb # 设置对应时区,替换成你主机的时区 echo "Asia/Shanghai" > /etc/timezone ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime安装完成后,容器的时间就会和主机同步了。
备注:内容来源于stack exchange,提问作者Irbis
相关产品推荐
相关产品推荐

