docker作为消息消费客户端,时区默认0时区
需要手动设置时区
# 查看容器时间 docker exec rabbit01 date # 查看服务器时间 date -R # 进入容器 docker exec -it rabbit01 /bin/bash # 查看容器时间 date -R
解决
在容器中修改方法
- 使用
tzselect
,根据提示,一步步操作选择北京时间 - 执行:
export TZ='Asia/Shanghai'
- 执行:
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
- 执行:
echo 'Asia/Shanghai' >/etc/timezone
在容器外修改方法
docker exec -it rabbit01 /bin/bash -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone docker run -e TZ="Asia/Shanghai"
直接将宿主机上的/etc/timezone和/etc/localtime挂载到容器中,这样可以保持容器和宿主机时区和时间一致。
-v /etc/timezone:/etc/timezone:ro -v /etc/localtime:/etc/localtime:ro
docker run --name rabbit01 --rm -ti -v /etc/timezone:/etc/timezone:ro -v /etc/localtime:/etc/localtime:ro alpine /bin/sh
容器内修改后commit打包,一劳永逸
docker container commit [containerID] [REPOSITORY[:TAG]] docker container export [containerID] > path