Docker容器时间与宿主机同步
转载地址:http://www.louisvv.com/archives/1716.html
问题描述:
在我们平时使用docker,运行我们的应用的时候,访问应用页面的时间与现在相差8个小时
无法结合时间点去判断当时服务的异常
同样,当我们在docker上运行某些服务时,需要时间与宿主机同步,否则会发生异常
原因:
宿主机设置了时区,而Docker容器并没有设置,导致两者相差8小时
解决办法:
为了保证容器和宿主机之间的时间同步:
可以使用以下几种办法:
1.Docker run
使用docker run运行容器时,添加如下参数
-v /etc/localtime:/etc/localtime:ro
验证:
[root@uat-app01 ~]# date #当前宿主机时间 Tue Jul 10 11:18:41 CST 2018 [root@uat-app01 ~]# docker run -it -v /etc/localtime:/etc/localtime:ro centos #运行docker,添加我们的参数 [root@df22a5da9c77 /]# date #当前容器时间 Tue Jul 10 11:18:47 CST 2018
2.DockerFile
在Docker File中添加如下参数:
将时区配置添加到环境变量,并使用软连接,并将时区配置文件覆盖
ENV TimeZone=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone
实例DockerFile如下:
FROM centos # Centos 基础镜像 MAINTAINER louisvv<648555416@qq.com> ENV TimeZone=Asia/Shanghai #添加时区环境变量,亚洲,上海 RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone #使用软连接,并且将时区配置覆盖/etc/timezone
构建镜像
docker build -t centos:time .
验证:
[root@uat-app01 ~]# date #当前宿主机时间 Tue Jul 10 11:08:39 CST 2018 [root@uat-app01 ~]# docker run -it centos:time /bin/bash #启动刚构建的 centos:time 镜像 [root@f35e963f9e8b /]# date #容器时间 Tue Jul 10 11:08:44 CST 2018
正在运行的容器,时间如何同步?
有些同学看到这里,不禁会问,如果是一个正在运行的docker容器,如何同步时间呢?
这种方式同样适用于,构造镜像完成后,时间不同步的状况
在宿主机执行命令如下:
docker cp -L /usr/share/zoneinfo/Asia/Shanghai 【容器名】:/etc/localtime
验证:
当前宿主机时间如下:
[root@uat-app01 ~]# date Tue Jul 10 11:27:01 CST 2018
启动一个docker容器
[root@uat-app01 ~]# docker run -itd centos fe51fba60df5c2425991aab0922c7318d2c3cf2c27b817632765ed24e7486ce6
进入该容器查看时间,发现与现在相差8个小时,退出exec
[root@uat-app01 ~]# docker exec -it fe51 /bin/bash [root@fe51fba60df5 /]# date Tue Jul 10 03:27:11 UTC 2018 [root@fe51fba60df5 /]# exit exit
在宿主机,执行我们提供的命令,将容器名改为对应的即可
[root@uat-app01 ~]# docker cp -L /usr/share/zoneinfo/Asia/Shanghai fe51:/etc/localtime
再次进入容器查看时间,发现时间同步过来了
[root@uat-app01 ~]# docker exec -it fe51 /bin/bash [root@fe51fba60df5 /]# date Tue Jul 10 11:27:17 CST 2018
Docker容器时间与宿主机同步相关推荐
- 17.Docker 容器时间与宿主机同步
Docker容器时间与宿主机同步 BY 赫墨拉 · PUBLISHED 2018年7月10日 · UPDATED 2019年6月10日 问题描述: 在我们平时使用docker,运行我们的应用的时候,访 ...
- Docker容器时间与宿主机不一致?3个解决方案
目录 前言 更新历史 问题描述 解决方案 docker run 添加时间参数 Dockerfile解决方案 docker-compose解决方案 宿主机直接执行命令给某个容器同步时间 异常问题 Doc ...
- docker容器无法访问宿主机报出 No route to host
项目场景: 提示:docker容器无法访问宿主机报出 No route to host: 例如:防火墙环境下,docker容器无法访问宿主机的其他应用端口 原因分析: 在进行docker部署的时候我们 ...
- Docker容器学习梳理-容器时间跟宿主机时间同步
在Docker容器创建好之后,可能会发现容器时间跟宿主机时间不一致,这就需要同步它们的时间,让容器时间跟宿主机时间保持一致.如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 ...
- docker容器端口影射宿主机端口
#将容器的8080端口映射宿主机端口8080 –name:给容器起的名称 docker run -d -p 8080:8080 --name="tomcat7" -id 1130e ...
- 【Docker】docker容器内获取宿主机的信息和执行宿主机的脚本
思路 我们可以通过在容器内远程连接宿主机,然后对宿主机进行操作. 使用 sshpass (我的是CentOS 7.9环境) 1.安装sshpass apt-get update //更新一下 apt- ...
- docker容器时区与宿主机不一致的解决方法
一般情况下,我们的宿主机服务器的时区都是在东八区,而docker容器里却是在零时区.这样就导致了时间差了8个小时,所以需要把容器的时间也设置成东八区. 在dockerfile中的设置如下: RUN l ...
- docker容器正常启动宿主机却无法正常访问
问题:重新开启linux虚拟机后有时候可以访问有时候不可以访问docker容器或者完全无法访问 原因:linux内核版本和docker版本不兼容 解决:更新linux内核版本 yum update - ...
- Docker中创建MySQL容器,将宿主机目录直接挂载到目录
Docker中创建MySQL容器,将宿主机目录直接挂载到目录 1.在Docker中下载MySQL镜像 docker pull mysql:5.7.25 2.创建目录/tmp/mysql/data和/t ...
最新文章
- android camera工程师,浅析Android Camera架构
- 如何评价三国里的袁绍
- 【数据结构与算法】之深入解析“学生出勤记录I”的求解思路与算法示例
- php 中访问常量,php 中的常量
- numpy array
- linux系统root用户忘记密码的重置方法
- LinkedIn开源数据发现和管理工具 WhereHows
- 重要更新丨完成前端重构,KubeOperator开源容器平台v3.7.0发布
- Java | ProGuard——java代码混淆利器
- 「3D视觉技术交流群」精华帖与关键问题
- php降序怎写,PHP数组如何按键名实现降序排列
- 解决U盘受保护(适用于U盘或移动硬盘)-亲测有效
- Linux内核错误码和错误指针
- Windows命令:Net使用详解
- joan jett(mv)
- 所见即所得:四款免编程移动游戏开发引擎推荐
- 计算机图形学【GAMES-101】8、辐射度量学与光线追踪
- PG::Covfefe
- 计算4的1万次方的结果
- Android 仿微博列表视频(一),静音播放