通过Dockerfile或者docker-compose创建容器后,有时候忘记时区问题,查看容器日志时,发现时区不对,需要修改,这时候不可能再重新构建容器,只能手动修改容器内时区,修改容器内时区也比较简单。
首先我们知道在Liux系统中,在/usr/share/zoneinfo/Asia
此处对应东八区时间,目录中存放着时区文件,/etc/localtime
中存放着配置文件,我们只需要将宿主机的/usr/share/zoneinfo/Asia/Shanghai
文件通过软链接或者直接复制到容器内部。建议直接复制到容器内部,因为好多容器应用的是base系统,内部缺少/usr/share/zoneinfo/Asia
目录,我们就直接进入容器创建目录,并将宿主机对应文件拷贝到容器内。
进入容器,建立目录
docker exec -it [容器ID或容器名] /bin/sh
mkdir -p /usr/share/zoneinfo/Asia
在宿主机将时区文件拷贝至容器内目录
docker cp /usr/share/zoneinfo/Asia/Shanghai [容器ID或容器名]:/usr/share/zoneinfo/Asia
在容器内将文件拷贝到etc目录,如有提示按’Y’覆盖
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
此时,在容器内查看时间为修改时区后的时间
date -R
1.以root身份进入容器
docker exec -it -u root 24795ac94ae7 /bin/sh
1
可以使用date -R 查看时间
2.在容器中创建文件
mkdir -p /usr/share/zoneinfo/Asia
3.回到宿主机,复制宿主机里的文件到容器中
docker cp /usr/share/zoneinfo/Asia/Shanghai 容器ID或容器名:/usr/share/zoneinfo/Asia
4.进入容器
docker exec -it -u root 容器Id或容器名 bash
执行命令 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
5.执行date -R 查看时区显示时间是否正确
docker cp -L /usr/share/zoneinfo/Asia/Shanghai 容器名:/etc/localtime