还在为 Docker 容器中的时区问题烦恼吗? 想要容器的时区与宿主机保持一致,但又不想深入研究复杂的配置? 试试最简单粗暴的 /etc/localtime
挂载方法吧!
原理:
直接将宿主机的 /etc/localtime
文件挂载到容器内的 /etc/localtime
位置。这样,容器就能使用与宿主机相同的时区设置。 ro
标志保证容器不会修改宿主机的时区文件,确保安全性。
优点:
- 简单快捷: 配置简单,几行代码即可搞定。
- 完全同步: 容器的时区与宿主机完全同步,省去手动配置的麻烦。
缺点:
- 依赖宿主机时区: 容器时区完全依赖宿主机,宿主机时区变更会影响容器。
- 潜在权限问题: 少数镜像可能需要额外的权限才能访问
/etc/localtime
。
操作步骤:
- 确认宿主机时区: 使用
timedatectl
或date
命令查看宿主机的时区是否正确。 修改
docker-compose.yml
: 将以下代码添加到你的服务定义中:version: "3.9"services: your-service: image: your-image volumes: - /etc/localtime:/etc/localtime:ro # ro 代表只读 # ... 其他配置
- 重启容器: 运行
docker-compose down && docker-compose up -d
重新构建并启动容器。
示例:
version: "3.9"services: web: image: nginx:latest volumes: - /etc/localtime:/etc/localtime:ro ports: - "80:80"
解释:
volumes:
定义卷挂载。/etc/localtime:/etc/localtime:ro:
将宿主机的/etc/localtime
文件挂载到容器的/etc/localtime
位置。:ro
表示只读,防止容器修改主机时区。
这种方法简单直接,能够快速实现 Docker 容器与宿主机时区的同步。 赶快试一下,告别时区困扰吧!
本文作者:Fly
版权声明:白嫖注明出处