网站 宣传方案,商城网站系统建设,关键词在线查询,烟台外贸网站建设公司一般情况下#xff0c;我们仅仅需要修改容器的时间与我们宿主机的实际实际一致即可#xff0c;我们知道#xff0c;默认情况下docker容器是不允许访问系统时钟#xff0c;但是有一款开源的软件使这样的需求变成了可能。此lib拦截用于检索当前时间和日期的所有系统调用…一般情况下我们仅仅需要修改容器的时间与我们宿主机的实际实际一致即可我们知道默认情况下docker容器是不允许访问系统时钟但是有一款开源的软件使这样的需求变成了可能。此lib拦截用于检索当前时间和日期的所有系统调用完成了容器内时间的修改。阅读此篇文章你将了解在容器内修改时间的方法。I. 使用以alpine为例我们进行编译安装并挑选几个简单的使用方法来进行演示这个时间调整git clone https://github.com/wolfcw/libfaketime.gitcd libfaketime/srcmake install他的使用非常简单只需要设置环境变量即可如下bash-4.4$ dateFri Mar 8 15:17:52 CST 2019修改天数bash-4.4$ LD_PRELOAD/usr/local/lib/faketime/libfaketime.so.1 FAKETIME-2dbash-4.4$ dateWed Mar 6 15:28:03 CST 2019修改分钟bash-4.4$ LD_PRELOAD/usr/local/lib/faketime/libfaketime.so.1 FAKETIME-70mbash-4.4$ dateFri Mar 8 14:18:45 CST 2019虚拟时间的默认规范是缓存的时间为10秒钟FAKETIME_NO_CACHE 1是禁用缓存但这可能带来性能影响II. 嵌入docker基础镜像中使用此前的基础镜像。在启动脚本中添加TIME_OFFSET变量顺便修改启动容器进程的id和用户名#!/bin/bash########################################################################## File Name: entrypoint.sh# Author: www.linuxea.com# Created Time: Tue 05 Mar 2019 03:59:05 PM CST#########################################################################USER_ID${USER_ID:-1101}USER_NAME${USER_NAME:-www}TIME_OFFSET${TIME_OFFSET:-FAKETIME_NO_CACHE1 FAKETIME}echo Starting with UID : $USER_ID And user $USER_NAMEaddgroup --gid $USER_ID $USER_NAMEadduser -u $USER_ID -S -H -s /bin/bash -g $USER_NAME -G $USER_NAME $USER_NAME -D# useradd --shell /bin/bash -u $USER_ID -o -c -m userexport HOME/home/$USER_NAMEexport LD_PRELOAD/usr/local/lib/faketime/libfaketime.so.1 $TIME_OFFSETexec /usr/local/bin/gosu $USER_NAME $这样以来在下次启动的时候传递环境变量就达到了修改容器时间的办法我将次镜像构建为marksugar/alpine:3.9-time-gosu你可以下载进行使用[rootlinuxea.com /opt/2019/djd/jj]# docker build -t marksugar/alpine:3.9-time-gosu .现在我们进行测试这个时间修改挂载/etc/localtime让容器时间与机器时间一致而后在进行传递$TIME_OFFSET修改时间的偏移量docker run \--rm \-v /etc/localtime:/etc/localtime \-e TIME_OFFSETFAKETIME-10m \-e USER_ID1101 \-e USER_NAMElinuxea.com \-it marksugar/alpine:3.9-time-gosu \date %F %T我们先取出时间[rootlinuxea.com ~]# date %F %T2019-03-08 15:54:11而后修改分钟减去10分钟-10m[rootlinuxea.com ~]# docker run \ --rm \ -v /etc/localtime:/etc/localtime \ -e TIME_OFFSETFAKETIME-10m \ -e USER_ID1101 \ -e USER_NAMElinuxea.com \ -it marksugar/alpine:3.9-time-gosu \ date %F %TStarting with UID : 1101 And user linuxea.com2019-03-08 15:44:16时间从2019-03-08 15:54:11变成2019-03-08 15:44:16修改天数减去3天-3d[rootlinuxea.com ~]# docker run \ --rm \ -v /etc/localtime:/etc/localtime \ -e TIME_OFFSETFAKETIME-3d \ -e USER_ID1101 \ -e USER_NAMElinuxea.com \ -it marksugar/alpine:3.9-time-gosu \ date %F %TStarting with UID : 1101 And user linuxea.com2019-03-05 15:57:43或者这样docker run \--rm \-v /etc/localtime:/etc/localtime \-e TIME_OFFSETFAKETIME-10m \-e USER_ID1101 \-e USER_NAMElinuxea.com \-it marksugar/alpine:3.9-time-gosu \date %F %TFAKETIME_NO_CACHE1[rootDT_Node-172_17_0_1 ~]# date %F %T2019-03-08 16:03:18[rootDT_Node-172_17_0_1 ~]# docker run \ --rm \ -v /etc/localtime:/etc/localtime \ -e TIME_OFFSETFAKETIME_NO_CACHE1 FAKETIME-10m \ -e USER_ID1101 \ -e USER_NAMElinuxea.com \ -it marksugar/alpine:3.9-time-gosu \ date %F %TStarting with UID : 1101 And user linuxea.com2019-03-08 15:53:18III. 更多阅读IV. 学习更多学习如何使用Docker CLI命令Dockerfile命令使用这些命令可以帮助你更有效地使用Docker应用程序。查看Docker文档和我的其他帖子以了解更多信息。除非另有说明否则本站上的内容根据以下许可进行许可: CC署名-非商业性使用-相同方式共享4.0国际许可协议4.0进行许可本文作者www.linuxea.com for Mark文章链接http://www.linuxea.com/2316.html (转载请注明本文出处和本章链接)