Docker容器与宿主机日期时间同步

docker_time_zone

Docker容器的默认时区取决于使用的基础镜像。许多常见的基础镜像(例如 Debian,Ubuntu 等)的默认时区通常是UTC(协调世界时)。这意味着如果没有在创建或运行Docker 容器时显式设置一个特定的时区,那么容器内部的时间将按照UTC来显示。

在创建容器时直接挂载localtime文件:

docker run --name <name> -v /etc/localtime:/etc/localtime:ro 

对已经创建的容器更新时区信息:

# 如果宿主机的/etc/localtime文件已经包含了正确的时区信息
docker cp -L /etc/localtime <containerId_or_containerName>:/etc/

# 如果需要指定特定的时区(例如上海时区)
docker cp /usr/share/zoneinfo/Asia/Shanghai <containerId_or_containerName>:/etc/localtime

创建Dockerfile时自定义镜像的时间格式与时区:

RUN echo "Asia/Shanghai" > /etc/timezone && \
	ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

使用DockerCompose:

version: '3'
services:
  service_name:
    image: your_image
    volumes:
      - /etc/localtime:/etc/localtime:ro