[转]解决Docker容器时间与主机不一致问题
原文: https://blog.csdn.net/luckystar689/article/details/76572046
https://stackoverflow.com/questions/35994349/php-date-timezone-not-found-with-docker-php-fpm
Official PHP Docker Image use /usr/local/etc/php as base folder: see Dockerfile.
'm creating a Symfony environment (PHP-FPM, Nginx, & more) with Docker & Docker-compose.
But, PHP does not use my php.ini and ignores the config (date.timezone parameter is not found in my Symfony application).
Of course, when I go on my container, the date.timezone is correctly set in the 2 php.ini (cli & FPM).
I don't understand why, but it works if I put my php.ini in /usr/local/etc/php/ folder (wtf)
Did I miss something?
docker-compose.yml :
nginx:
image: nginx
volumes:
- "./docker/nginx/nginx.conf:/etc/nginx/nginx.conf:ro"
links:
- "php:php"
ports:
- "80:80"
- "443:443"
working_dir: "/etc/nginx"
php:
build: docker/php
volumes:
- ".:/var/www:rw"
working_dir: "/var/www"
Dockerfile :
FROM php:5-fpm
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && \
apt-get install -y php5-common php5-fpm php5-cli php5-mysql php5-apcu php5-intl php5-imagick && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
RUN sed -i 's/;date.timezone =/date.timezone = "Europe\/Paris"/g' /etc/php5/fpm/php.ini
RUN sed -i 's/;date.timezone =/date.timezone = "Europe\/Paris"/g' /etc/php5/cli/php.ini
RUN usermod -u 1000 www-data
---------------------------------------------------------------------------------
目录
背景
公司做的项目是部署到dockerize的tomcat容器上的,将日志映射到了宿主机器的某个目录下,但是出现了一个问题,那就是日志打印的时间有问题,会比宿主机的时间晚8个小时。
解决方法
一、先查看服务器和容器时区设置是否一致:
1、docker容器内的时区是UTC
2、主机的时区是CTS
二、这两个时区有什么不同呢?
GPS 系统中有两种时间区分,一为UTC,另一为LT(地方时)两者的区别为时区不同,UTC就是0时区的时间,地方时为本地时间,如北京为早上八点(东八区),UTC时间就为零点,时间比北京时晚八小时
CTS:
China Standard Time,UTC+8:00 中国沿海时间(北京时间)
UTC:
Universal Time Coordinated 世界协调时间
三、如何解决?(设置时区一致)
解决的时候做了三种尝试:
第一次在服务镜像所依赖的镜像tomcat的Dockerfile中加入如下设置:
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' >/etc/timezone
- 1
- 2
重新构建镜像,启动容器,发现和此tomcat镜像在同一台服务器上的服务时区和时间均修改成功,但是不在同一台服务器上的docker容器还是UTC时区,时间不一致。
第二次,容器启动的时候挂个参数,让其使用主机服务器上的时间:
docker run -d --name demo-service --rm -p 8084:8080 -v /usr/local/tomcat/logs/tomcat8080:/usr/local/tomcat/logs -v /etc/localtime:/etc/localtime demo-service:1.0.0
- 1
其中加入的 -v /etc/localtime:/etc/localtime就是时间的设置,设置好后,启动容器,进入容器内部,打date命令,输出的时间和主机时间一样,然后查看tomcat日志,发现日志的时间没有变还是比主机晚8个小时。
于是,寻求另一种解决办法。
第三次,在各个服务的Dockerfile中加入对时区和时间的设置,如第一次尝试的Dockerfile中加入的内容。
重新使用Jenkins构建服务,实验成功!
[转]解决Docker容器时间与主机不一致问题的更多相关文章
- Docker容器时间与主机时间相差8小时
查看主机时间 [root@localhost ~]# date 2016年 07月 27日 星期三 22:42:44 CST 查看容器时间 root@b43340ecf5ef:/# date Wed ...
- 解决docker容器日志导致主机磁盘空间满了的情况
日志文件在 /var/lib/docker/containers/<docker_container_id>/ 目录下 查看日志大小 vim /opt/docker_log_siz ...
- docker容器时间不对及java程序时间不对解决
使用docker容器部署的应用,会出现时间与主机不一致的情况 1. 容器时间与主机差8个小时:主机的与容器的/etc/localtime不一致 解决方法:挂载主机的/etc/localtime,如果没 ...
- 【解决】修改 docker 容器时间与宿主机不同
修改 docker 容器时间 需求: 这几天,开发提了个需求 "测试需要模拟未来某天的业务,发现容器里面没有修改时间的权限",想在我们 k8s 集群上,调整容器时间 解决方案: 使 ...
- Docker容器的跨主机连接
Docker容器的跨主机连接 Docker容器的跨主机连接 使用网桥实现跨主机容器连接 网络拓扑 网络连接使用的是Bridge 操作 修改/etc/network/interfaces文件,分配静态I ...
- docker 容器时间跟宿主机时间同步
docker 容器时间跟宿主机时间同步 docker cp /etc/localtime 87986863838b:/etc/docker cp /etc/localtime container-na ...
- 解决docker容器中Centos7系统的中文乱码
解决docker容器中Centos7系统的中文乱码问题有如下两种方案: 第一种只能临时解决中文乱码: 在命令行中执行如下命令: # localedef -i zh_CN -f UTF-8 zh_CN. ...
- 解决docker容器的窗口大小问题
解决docker容器的窗口大小问题 最近哥们在是使用docker时,发现有些容器内部窗口大小有问题. 如下午所示,vi窗口只占据左上角一部分.正常情况下vi应该铺满整个窗口才对呀. 所以哥们找到了解决 ...
- 关于docker容器访问的主机的端口问题
docker容器需要访问主机的,不能使用127.0.0.1,127.0.0.1访问的是docker容器不是主机: docker容器创建时会分配一个主机ip,可在主机使用命令 docker inspec ...
随机推荐
- BZOJ3668 [Noi2014]起床困难综合症 【贪心】
题目 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm 一直坚持与起床困难综合症作斗争.通过研究相关文献,他找到了该病的发病原因 ...
- Avito Cool Challenge 2018:C. Colorful Bricks
C. Colorful Bricks 题目链接:https://codeforces.com/contest/1081/problem/C 题意: 有n个横向方块,一共有m种颜色,然后有k个方块的颜色 ...
- ss安装教程
https://teddysun.com/342.html 加速 wget –no-check-certificate https://github.com/teddysun/across/raw/m ...
- 转:LinkedHashMap使用(可以用来实现LRU缓存)
1. LinkedHashMap概述: LinkedHashMap是HashMap的一个子类,它保留插入的顺序,如果需要输出的顺序和输入时的相同,那么就选用LinkedHashMap. LinkedH ...
- LINK : fatal error LNK1104: 无法打开文件“mfc71.lib”(转)
原文转自 http://blog.csdn.net/mxclxp/article/details/8196142 [环境] Windows XP OS: Visual Studio 2008: ...
- UVA 11125 Arrange Some Marbles
dp[i][j][m][n][s]表示最初选择j个i号颜色大理石.当前选择n个m号颜色大理石.剩余大理石状态(8进制数状压表示)最开始没看出状压..sad #include <map> # ...
- 如何在Android 或Linux 下,做Suspend /Resume 的Debug【转】
转自:http://blog.csdn.net/jacobywu/article/details/24735521 目录(?)[-] Question Answer 加boot 參數 no_conso ...
- 多个类的DLL封装及调用
#define FaceLIBDLL #include "stdafx.h" #include "facedll.h" #include <opencv2 ...
- python 独立环境安装
python 即使是单独编译安装的,库文件的安装还是会与其它python的库存放到相同的地方 使用同版本库不会有问题,但是需要升级库的时候,就会出现冲突,导致依赖这个旧库的python出现问题 这时候 ...
- 记录常见的HTTP请求错误
服务器提交了协议冲突. Section=ResponseHeader Detail=CR 后面必须是 LF 解决方案:winfrom 在app.config种添加 web 在 web.config种添 ...