Bootstrap

docker容器时间和主机时间不一致(时区问题)

Docker容器内默认使用UTC时间(标准时间),我们一般使用CST时间(东八区时间)。

首先先查看容器内时间

docker exec 容器ID date -R

方法1、修改Dockerfile

如果是自己编写Dockerfile制作的镜像在Dockerfile中添加如下代码

ENV TZ=Asia/Shanghai

方法2、修改创建容器命令

以创建Redis容器为例

docker run -d -p 6379:6379 --name redis --privileged=true \
--restart=always \
-v /home/pdocker/app/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /home/docker/app/redis/data:/data \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/timezone:/etc/timezone:ro \
redis \
redis-server /etc/redis/redis.conf

-v /etc/localtime:/etc/localtime:ro 使用宿主机时间作为容器内时间
-v /etc/timezone:/etc/timezone:ro 使用宿主机时区作为容器内时区

方法3、容器已经启动时 宿主机内修改

// 进入交互模式,下同
docker exec -it 容器ID /bin/bash 
//改时区
echo "Asia/Shanghai" > /etc/timezone 
//改本地时间
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
//需要重启容器,不重启部分项目可能会不生效
docker restart 容器ID 
// 查看时区
docker exec 容器ID date -R 

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;