docker容器时间与宿主机时间不一致问题总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker容器时间与宿主机时间不一致问题总结相关的知识,希望对你有一定的参考价值。

参考技术A 查询容器内部时间和宿主机时间相差8小时,时区同步完成时间不对。

查询命令:(不进入容器内部,执行命令)

在构建容器的时候用到(时间、时区)时候有jdk,宿主机,和容器,只要保证3者时间一致即可。

如果不关注基础镜像的底层构建时候的时区,在容器构建时候加网上如下办法只会出现以上图片问题,时区改变了,时间还是差8小时。

在容器中创建文件:

在宿主机上面执行命令,拷贝时区文件:

再次查询时间:

如果还是不行,则进入容器内部执行:

修改时间

可以使用date -R 查看时间

在修改时间以后,修改硬件CMOS的时间

jdk读取linux系统时间步骤:

1.先找“TZ”变量,没有,到2,

2.读/etc/timezone,没有到3,

3.比较/etc/localtime文件与"/usr/share/zoneinfo目录下所有时区文件,如果有一致的,就为该时区,如果没有,到4,

4.默认为标准GMT

因为工作项目当中构建频繁,所以只能在构建前进行修改,在dockerfile里面修改最佳,但当上面方法都失效的时候,就应该关注底层镜像构建时候jdk的时间。

既然时间可以配置为什么我们不用好的插件来管理。

时间同步服务器ntpdate和IANA维护的tzdata都是好的选择,下面推荐2篇centons7 的有关文章。

还有很多好的方法和一些命令容易遇到的bug希望有时间来和大家分享探讨。

DOCKER 容器和主机上的运行时内核参数不一致

【中文标题】DOCKER 容器和主机上的运行时内核参数不一致【英文标题】:Inconsistent runtime kernel parameters in DOCKER container and on host 【发布时间】:2015-06-05 08:21:08 【问题描述】:

我的主机在 Ubuntu 14.04.2 LTS 上,我正在使用最新的 centos 基础映像来创建 IBM InfoSphere BigInsights 的 DOCKER 映像,以便将其推送到 Bluemix Container Cloud。

我几乎解决了所有问题,但我坚持使用 sysctl 设置运行时内核参数,因为它们的值错误并且安装程序会抱怨。

sysctl -a |grep net.ipv4.ip_local_port_range
net.ipv4.ip_local_port_range = 32768    61000

当然不能将它们设置在 DOCKER 容器中,我收到以下错误:

sysctl -w net.ipv4.ip_local_port_range="1024 64000"
sysctl: setting key "net.ipv4.ip_local_port_range": Read-only file system

所以我已经在主机系统上设置了参数:

sudo sysctl -w net.ipv4.ip_local_port_range="1024 64000"
net.ipv4.ip_local_port_range = 1024 64000

sudo sysctl -a |grep net.ipv4.ip_local_port_range
net.ipv4.ip_local_port_range = 1024 64000

我什至重建了整个图像并重新创建了容器,但仍然在我得到的 DOCKER 容器内:

sysctl -a |grep net.ipv4.ip_local_port_range
net.ipv4.ip_local_port_range = 32768    61000

有什么想法吗?

【问题讨论】:

[刷新 docker 容器的 net.core.somaxcomm(或任何 sysctl 属性)][1] [1]:***.com/questions/26177059/… 非常好,不幸的是我的主机系统上没有/proc/net.ipv4,但我明白你的意思,会考虑一下 但是一旦我通过 DOCKER 恕我直言设置主机的内核参数,在主机系统本身上设置它们就没有区别:( 【参考方案1】:

您需要重新加载 sysctl。尝试以下命令之一(它们取决于您的操作系统)

sudo /etc/rc.d/sysctl reload

sudo sysctl -p /etc/sysctl.conf

【讨论】:

您好,我已经在主机系统上设置了参数并从头开始构建映像,但在运行的 docker 容器中仍然有错误的参数 我更新了上面的答案,应该重新加载 sysctl。 你能粘贴运行其中一个/两个命令的错误吗? 你还有这个问题吗?

以上是关于docker容器时间与宿主机时间不一致问题总结的主要内容,如果未能解决你的问题,请参考以下文章

Docker容器时间与宿主机时间不一致

处理docker容器时间和宿主机时间不一致问题

处理docker容器时间和宿主机时间不一致问题

处理docker容器时间和宿主机时间不一致问题

docker 解决容器时区时间不一致

DOCKER 容器和主机上的运行时内核参数不一致