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

docker_time_zone

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

创建容器的时候指定启动参数,挂载宿主机 localtime 文件到容器内

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

复制宿主机 localtime 到容器中

docker cp /etc/localtime <containerId/containerName>:/etc/
# OR
docker cp -L /usr/share/zoneinfo/Asia/Shanghai <containerId/containerName>:/etc/localtime

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

# CentOS
RUN echo "Asia/shanghai" > /etc/timezone;
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

# Ubuntu
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

使用 Docker Compose

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