日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux怎么查询全部容器时间,linuxea:如何单单修改docker容器的系统时间

發布時間:2023/12/4 linux 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux怎么查询全部容器时间,linuxea:如何单单修改docker容器的系统时间 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一般情況下,我們僅僅需要修改容器的時間與我們宿主機的實際實際一致即可,

我們知道,默認情況下docker容器是不允許訪問系統時鐘,但是有一款開源的軟件使這樣的需求變成了可能。此lib攔截用于檢索當前時間和日期的所有系統調用,完成了容器內時間的修改。

閱讀此篇文章,你將了解在容器內修改時間的方法。

I. 使用

以alpine為例,我們進行編譯安裝,并挑選幾個簡單的使用方法來進行演示這個時間調整

git clone https://github.com/wolfcw/libfaketime.git

cd libfaketime/src

make install

他的使用非常簡單,只需要設置環境變量即可,如下

bash-4.4$ date

Fri Mar 8 15:17:52 CST 2019

修改天數

bash-4.4$ LD_PRELOAD=/usr/local/lib/faketime/libfaketime.so.1 FAKETIME="-2d"

bash-4.4$ date

Wed Mar 6 15:28:03 CST 2019

修改分鐘

bash-4.4$ LD_PRELOAD=/usr/local/lib/faketime/libfaketime.so.1 FAKETIME="-70m"

bash-4.4$ date

Fri 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_CACHE=1 FAKETIME=""}

echo "Starting with UID : $USER_ID And user $USER_NAME"

addgroup --gid $USER_ID $USER_NAME

adduser -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 user

export HOME=/home/$USER_NAME

export LD_PRELOAD=/usr/local/lib/faketime/libfaketime.so.1 $TIME_OFFSET

exec /usr/local/bin/gosu $USER_NAME "$@"

這樣以來,在下次啟動的時候,傳遞環境變量就達到了修改容器時間的辦法

我將次鏡像構建為marksugar/alpine:3.9-time-gosu,你可以下載進行使用

[root@linuxea.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_OFFSET=FAKETIME="-10m" \

-e USER_ID=1101 \

-e USER_NAME=linuxea.com \

-it marksugar/alpine:3.9-time-gosu \

date +%F" "%T

我們先取出時間

[root@linuxea.com ~]# date +%F" "%T

2019-03-08 15:54:11

而后修改分鐘,減去10分鐘,-10m

[root@linuxea.com ~]# docker run \

> --rm \

> -v /etc/localtime:/etc/localtime \

> -e TIME_OFFSET=FAKETIME="-10m" \

> -e USER_ID=1101 \

> -e USER_NAME=linuxea.com \

> -it marksugar/alpine:3.9-time-gosu \

> date +%F" "%T

Starting with UID : 1101 And user linuxea.com

2019-03-08 15:44:16

時間從2019-03-08 15:54:11變成2019-03-08 15:44:16

修改天數,減去3天,-3d

[root@linuxea.com ~]# docker run \

> --rm \

> -v /etc/localtime:/etc/localtime \

> -e TIME_OFFSET=FAKETIME="-3d" \

> -e USER_ID=1101 \

> -e USER_NAME=linuxea.com \

> -it marksugar/alpine:3.9-time-gosu \

> date +%F" "%T

Starting with UID : 1101 And user linuxea.com

2019-03-05 15:57:43

或者這樣

docker run \

--rm \

-v /etc/localtime:/etc/localtime \

-e TIME_OFFSET=FAKETIME="-10m" \

-e USER_ID=1101 \

-e USER_NAME=linuxea.com \

-it marksugar/alpine:3.9-time-gosu \

date +%F" "%T

FAKETIME_NO_CACHE=1

[root@DT_Node-172_17_0_1 ~]# date +%F" "%T

2019-03-08 16:03:18

[root@DT_Node-172_17_0_1 ~]# docker run \

> --rm \

> -v /etc/localtime:/etc/localtime \

> -e TIME_OFFSET="FAKETIME_NO_CACHE=1 FAKETIME="-10m"" \

> -e USER_ID=1101 \

> -e USER_NAME=linuxea.com \

> -it marksugar/alpine:3.9-time-gosu \

> date +%F" "%T

Starting with UID : 1101 And user linuxea.com

2019-03-08 15:53:18

III. 更多閱讀

IV. 學習更多

學習如何使用Docker CLI命令,Dockerfile命令,使用這些命令可以幫助你更有效地使用Docker應用程序。查看Docker文檔和我的其他帖子以了解更多信息。

除非另有說明,否則本站上的內容根據以下許可進行許可: CC署名-非商業性使用-相同方式共享4.0國際許可協議4.0進行許可

本文作者:www.linuxea.com for Mark

文章鏈接:http://www.linuxea.com/2316.html (轉載請注明本文出處和本章鏈接)

總結

以上是生活随笔為你收集整理的Linux怎么查询全部容器时间,linuxea:如何单单修改docker容器的系统时间的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。