服务器和docker容器时间不一致相关问题

遇到的问题:

  • docker容器时间和服务器时间不一致
  • 容器产生的日志时间相差8小时

问题解决:

  • docker容器和服务器时间不一致,我在docker启动命令添加了服务器时间文件的挂载:

    -v /etc/localtime:/etc/localtime:ro -v /etc/timezone:etc/timezone:ro

  • 添加完后,我发现还不对,服务器时间是12小时制,容器内时间因为镜像打包默认选的是上海时区是24小时制。我搜了下说12小时制会有歧义,可能会导致问题。我就改了下默认时区:

    #Ubuntu24.04的服务器
    timedatectl set-timezone Asia/Shanghai
    #vim /etc/default/locale,在最后一行加入以下代码
    LC_TIME=en_DK.UTF-8

上述修改完后,需要退出当前服务器链接,重新链接服务器才能看到时间改变。

  • 容器需要重启后,时间才能正常同步。

修改容器时间的集中常用方法:

  • 1.直接用命令挂载这个两个目录,启动时映射
  • docker run -it -v /etc/timezone:/etc/timezone -v /etc/localtime:/etc/localtime --name 容器名 镜像名

2.复制时区信息到容器

bash 复制代码
docker cp /etc/localtime [容器ID或名字]:/etc/localtime
docker cp /usr/share/zoneinfo/Asia/Shanghai [容器ID或名字]:/etc/localtime

3.在已经创建好容器之后,进入容器进行指定时区

bash 复制代码
docker exec -it 容器名/ID /bin/bash
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

4.Dockerfile直接执行

bash 复制代码
# Centos
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo "Asia/Shanghai" > /etc/timezone;
# Ubuntu
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

5.还有一种方法,我们直接cd到/usr/share/zoneinfo/Asia进行修改

bash 复制代码
cd /usr/share/zoneinfo/Asia
cp -i Shanghai /etc/localtime
相关推荐
虎王物联1 小时前
Docker BuildKit多阶段构建:IoT固件交叉编译流水线实战
运维·物联网·ci/cd·docker·容器·物联网嵌入式
Mortalbreeze1 小时前
深入理解 Linux IO 模型(二):多路复用——select
linux·运维·服务器·网络·tcp/ip
养生技术人1 小时前
Oracle OCP认证考试题目详解082系列第17题
运维·数据库·sql·oracle·ocp
LlmCraft|大模型工程实践1 小时前
14. CI/CD 流水线中集成 Docker:GitHub Actions 自动构建部署
ci/cd·docker·github
Mrs_DongDong2 小时前
华为云 Windows 服务器远程桌面自定义端口排障指南
服务器·windows·华为云
SamChan902 小时前
PDF翻译服务端到端基准测试:4款主流方案的吞吐量、延迟、内存占用对比
服务器·网络·python·ai·pdf·wpf
笑梦无境2 小时前
nginx安装(5)
linux·运维·nginx
流浪0012 小时前
Linux系统篇26——通信(三)补:共享内存访问真的不进内核?
linux·运维·服务器
不会就选b2 小时前
Linux之socket编程(七)----序列化与反序列化(1)
java·linux·服务器
极小狐2 小时前
极狐GitLab Duo 功能更新:扩展 MCP 工具集、支持 MR 事件触发
运维·gitlab·agent·mr·极狐gitlab·mcp·极狐gitlab duo