Docker容器与宿主机日期时间同步
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