如何让 docker镜像使用系统时间,而不是utc

118 阅读1分钟

其实是一件简单的事,但是老忘记,还是记录下

可以,一行参数就能让容器用宿主机本地时区,无需改镜像、无需装任何包:

docker run -d \
  --name openresty \
  -p 8359:8359 \
  -v /etc/localtime:/etc/localtime:ro \
  -v /etc/timezone:/etc/timezone:ro \
  my/openresty-kafka:arm64

解释

  • /etc/localtime时区数据文件(二进制),挂进去容器即可;
  • /etc/timezone时区名字(如 Asia/Shanghai),一起挂保证 date 命令输出也正确;
  • :ro 只读,安全。

验证

docker exec openresty date
# 输出应与宿主机完全一致

docker-compose 写法

services:
  openresty:
    image: my/openresty-kafka:arm64
    ports:
      - "8359:8359"
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro

零镜像改动,零依赖,一条挂载即与宿主机时间同步。