docker容器中如何修改時(shí)間
docker容器中修改時(shí)間
我們?cè)赿ocker容器中直接通過命令行修改時(shí)間會(huì)有下面這個(gè)報(bào)錯(cuò):
date: can't set date: Operation not permitted
這是由于docker容器是基于Linux的Capability機(jī)制來進(jìn)行隔離。
而修改系統(tǒng)時(shí)間是需要有SYS_TIME權(quán)限才可以修改,docker容器默認(rèn)是沒有這個(gè)權(quán)限的。
所以我們可以在啟動(dòng)容器的時(shí)候,加一個(gè)參數(shù)
--cap-add SYS_TIME
比如
docker run -it --cap-add SYS_TIME --name docker1101 apline /bin/sh
然后我們?cè)偃ト萜髦袌?zhí)行修改時(shí)間的命令:
date -s "2021-3-10 11:42:45" docker exec -i docker1101 /bin/sh -c 'date -s "2021-3-10 11:42:45"'
可以看到容器的時(shí)間已經(jīng)改變
不過通過這種方式修改容器的時(shí)間,事實(shí)上同時(shí)把宿主機(jī)的時(shí)間也會(huì)修改了。
如果這個(gè)宿主機(jī)上同時(shí)運(yùn)行了其他的容器,那么這些容器的時(shí)間也會(huì)產(chǎn)生變化。
另外還有一種方式,可以用libfaketime
libfaketime是一個(gè)庫(kù),用于修改docker容器時(shí)間而不影響宿主機(jī)的。
它能夠“覆蓋”應(yīng)用程序用來檢索當(dāng)前日期或時(shí)間的系統(tǒng)調(diào)用,并給這些調(diào)用提供偽造的值。
它發(fā)布于github
安裝記錄如下:
我這里的docker用得是apline,先切換apline安裝源
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
下載libfaketime
wget https://github.com/wolfcw/libfaketime/archive/master.zip
安裝
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories apk add make gcc g++ wget http://192.168.0.203/master.zip unzip master.zip cd libfaketime-master make && make install cd .. rm -rf libfaketime-master master.zip
驗(yàn)證
export LD_PRELOAD=/usr/local/lib/faketime/libfaketime.so.1 FAKETIME="2019-08-12 10:30:22"
docker容器修改時(shí)間報(bào)錯(cuò) date: cannot set date: Operation not permitted
docker容器修改時(shí)間 date -s 報(bào)錯(cuò) date: cannot set date: Operation not permitted
原因是在容器內(nèi)沒有權(quán)限進(jìn)行操作,啟動(dòng)容器時(shí)授權(quán)即可。
docker-compose修改方法
添加 privileged: true

容器修改方法
docker run -itd --privileged=true -p 3306:3306 mysql:5.7.36
接下來就可以使用date -s修改時(shí)間了
直接修改時(shí)區(qū)
添加
environment: - TZ=Asia/Shanghai
如下圖:

總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
docker創(chuàng)建mongodb數(shù)據(jù)庫(kù)容器的方法
本文將通過docker創(chuàng)建一個(gè)mongodb數(shù)據(jù)庫(kù)容器,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-03-03
Docker安裝Maven私服Nexus3的實(shí)現(xiàn)步驟
本文主要介紹了Docker安裝Maven私服Nexus3的實(shí)現(xiàn)步驟,可以幫助開發(fā)者搭建高效的依賴管理和分發(fā)環(huán)境,具有一定的參考價(jià)值,感興趣的可以了解一下2025-12-12
Docker Compose 容器編排的實(shí)現(xiàn)
本文主要介紹了Docker Compose 容器編排的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
SpringBoot打包docker鏡像發(fā)布的詳細(xì)步驟
這篇文章主要介紹了SpringBoot打包docker鏡像發(fā)布,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-04-04
portainer連接遠(yuǎn)程docker的實(shí)現(xiàn)示例
本文主要介紹了portainer連接遠(yuǎn)程docker的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05

