前几天公司上了一个项目,使用ffmpeg进行视频和音频合成程序,依赖的不多,只需要从MQ从获取消息,然后从oss中下载文件,进行合成后在传到OSS上,这个程序只依赖JAVA,所以需要跑在JAVA环境上,为了避免高峰期堆积MQ。所以,我们就想把所有程序都跑在docker容器上,因为我们跑多个程序上时出现的堆积并没有下降,所以跑在docker容器上比较方便。
[root@www.wulaoer.org ~]# docker run -itd --name jad1.8 ffmpeg1.0:latest /bin/bash 115c9ac107eee5e6cc2d0d56b5591fc81543f15d5017d6953b1cf8d4e1d29a63 [root@www.wulaoer.org ~]# docker exec -it jad1.8 /bin/bash [root@115c9ac107ee /]# date Sat Apr 18 01:11:54 UTC 2020 [root@115c9ac107ee /]# exit exit [root@www.wulaoer.org ~]# date Sat Apr 18 09:11:59 CST 2020
本地时间和系统时间相差时间是8个小时,注意一下时区,容器中的时区是UTC,我系统的时区是CST。为了两个时间一直,所以我需要统一一下时区,
[root@115c9ac107ee /]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime cp: overwrite '/etc/localtime'? y [root@115c9ac107ee /]# date Sat Apr 18 09:16:50 CST 2020
我在容器中修改一下时区,时间就同步过来了,也可以把本地的时区copy一下,copy到容器中。
[root@www.wulaoer.org ~]# docker cp /etc/localtime 115c9ac107ee:/etc/localtime
不过这种方式,系统的时间和是一致了,但是在容器中跑的应用实践不一致了,应用日志时间还是和系统的时间相差8小时,这个有的说在java里设置一下时区,但是我的是跑springboot的,所以,没有办法,这个方案不行,第二种就是安装ntp进行同步时间,不过这个太繁琐了,后来,一个同事告诉我,可以在创建容器的时候指定时区。
root@www.wulaoer.org ~]# docker run -it --name ffmpeg2.0 --env TZ=Asia/Shanghai --privileged=true centos:7.2.1511 /bin/bash [root@02272146041f /]#
直接使用了变量--env TZ=Asia/Shanghai生成的容器,日志时间一致了,问题解决,这个可以我们在写dockerfile中加上去,下章说一下dockerfile的用法。
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏