docker 修改时区

docker 与宿主时区相差8小时,可通过以下方法进行修改解决

进入宿主机查看容器 docker ps

进入容器 :

docker exec -it 容器名id /bin/bash

查询时间 date ,与宿主时区相差8小时

解决办法

1.复制相应的时区文件,替换系统时区文件;

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

有的容器基础镜像是有这个文件的,直接拷贝就可以,如果不能拷贝,则是因为创建镜像时依赖的基础镜像 运行的容器没有这两个文件,使用下面的办法

2. 创建文件夹

mkdir -p /usr/share/zoneinfo/Asia

3.回到宿主机,复制宿主机里的文件到容器中

docker cp /usr/share/zoneinfo/Asia/Shanghai 容器ID或容器名:/usr/share/zoneinfo/Asia

4. 进入容器

docker exec -it 容器Id或容器名 /bin/bash

执行命令 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

5. 验证date

bash-5.0# date
与宿主时区一致,及修改成功

### 修改 Docker 容器时区的方法 在 Windows 11 上运行 Docker 容器时,默认情况下容器会使用 UTC 时间作为其内部时钟。这可能导致容器中的时间和宿主机上的时间不一致,从而影响依赖于时间的应用程序的行为。为了使容器内的时区与宿主机保持一致,可以采用以下方法之一。 #### 方法一:挂载宿主机的 `/etc/localtime` 文件 通过将宿主机的时区文件 `/etc/localtime` 挂载到容器中,可以让容器自动识别并应用宿主机的时区配置。具体操作如下: 启动容器时,在 `docker run` 命令中加入 `-v /etc/timezone:/etc/timezone:ro -v /etc/localtime:/etc/localtime:ro` 参数[^1]。例如: ```bash docker run -itd \ --name my_container \ -v /etc/timezone:/etc/timezone:ro \ -v /etc/localtime:/etc/localtime:ro \ your_image_name ``` 需要注意的是,在 Windows 平台上,上述路径映射方式适用于 WSL2 后端环境下的 Docker Desktop。如果未启用 WSL2,则需手动调整路径或创建自定义时区文件。 #### 方法二:设置环境变量 TZ 另一种解决方案是在启动容器时设定 `TZ` 环境变量来指定目标时区。此方法无需共享任何文件即可实现相同效果。例如: ```bash docker run -itd \ --name my_container \ -e TZ=Asia/Shanghai \ your_image_name ``` 这里以亚洲/上海为例设置了东八区的时间偏移量。用户可以根据实际需求替换为其他有效区域名称列表中的条目 (如 America/New_York 或 Europe/London)。 验证更改是否生效可进入正在运行的目标容器执行命令查看当前系统日期及时刻: ```bash docker exec -it my_container bash -c "date" ``` #### 方法三:安装 tzdata 调整时区 对于某些基础镜像(比如 alpine),它们可能并未预装完整的时区数据库(tzdata包卡顿情况较多), 此种情形下则需要先更新软件源再安装tzdata组件,最后按照常规流程完成相应配置工作: ```bash # 更新apk索引库以及下载必要的数据集 docker exec -it my_container apk add --no-cache tzdata # 设置所需的地区参数至/etc/localtime链接地址处 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo Asia/Shanghai > /etc/timezone ``` 以上三种途径均可达成预期目的即让Docker Container能够正确反映Host Machine所处于之Time Zone状况. ### 注意事项 当尝试同步Windows系统的本地时间给Linux-based Containers的时候,请确认已经激活了WSL2模式支持功能;否则单纯依靠volume mounts或许无法正常运作因为两者之间存在根本性的差异性[^2].
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值