问题
容器时间与北京时间相差8个小时
原因
宿主机设置了时区,而Docker容器并没有设置,导致两者相差8小时
解决方案:
1、 docker run 添加时间参数
-v /etc/localtime:/etc/localtime
例如:
docker run -p 3306:3306 --name mysql -v /etc/localtime:/etc/localtime
1、 Dockerfile
#添加时区环境变量,亚洲,上海
ENV TimeZone=Asia/Shanghai
#使用软连接,并且将时区配置覆盖/etc/timezone
RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone
1、 docker-compose
#第一种方式(推荐):
environment:
TZ: Asia/Shanghai
#第二种方式:
environment:
SET_CONTAINER_TIMEZONE=true
CONTAINER_TIMEZONE=Asia/Shanghai
#第三种方式:
volumes:
- /etc/timezone:/etc/timezone
- /etc/localtime:/etc/localtime
1、 宿主机直接执行命令给某个容器同步时间
docker cp -L /usr/share/zoneinfo/Asia/Shanghai 【容器名】:/etc/localtime