如何檢查Docker容器時(shí)區(qū)是否與宿主機(jī)一致?
1、進(jìn)入宿主機(jī), 執(zhí)行以下命令:
# 查看宿主機(jī)時(shí)間
[root@localhost ~]# date
2018年 06月 27日 星期三 22:42:44 CST
2、進(jìn)入到容器中,執(zhí)行以下命令
# 查看容器時(shí)間
root@lksjoid909090:/#date
Wed Jul 27 14:43:31 UTC 2018
CST應(yīng)該是指(China Shanghai Time,東八區(qū)時(shí)間)
UTC應(yīng)該是指(Coordinated Universal Time,標(biāo)準(zhǔn)時(shí)間)
可以發(fā)現(xiàn),他們相隔了8小時(shí), 宿主機(jī)與Docker容器時(shí)區(qū)不一致。
解決方案:
1、【鏡像未生產(chǎn)前】基礎(chǔ)鏡像 在 Dockerfile 中設(shè)置時(shí)區(qū):
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
2、【鏡像生成后 && 容器未創(chuàng)建】 創(chuàng)建并啟動(dòng)容器時(shí):
# 共享主機(jī)時(shí)間
docker run --name <name> -v /etc/localtime:/etc/localtime:ro ...
3、【鏡像生成后 && 容器啟動(dòng)】 容器外,宿主機(jī)中修改:
docker cp /etc/localtime [容器ID或者NAME]:/etc/localtime
4、【鏡像生成后 && 容器啟動(dòng)】 容器中
apk add tzdata
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime echo "Asia/Shanghai" > /etc/timezone
補(bǔ)充知識(shí):docker命令報(bào)錯(cuò)error during connect: Get http://2F2F.2Fpipe2Fdocker_engine/v1.36/containers/json: open//.
執(zhí)行docker ps報(bào)錯(cuò)
error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.36/containers/json: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running.
報(bào)錯(cuò)信息如下:
解決方法
1.執(zhí)行命令:
docker-machine env default
2.方法一:
將顯示的命令復(fù)制出來進(jìn)行執(zhí)行
執(zhí)行完后,再執(zhí)行docker ps等命令,即可正常使用
3. 方法二:
只將最后一句
REM @FOR /f “tokens=*” %i IN (‘docker-machine env default') DO @%i
命令去掉REM進(jìn)行執(zhí)行,即執(zhí)行
@FOR /f "tokens=*" %i IN ('docker-machine env default') DO @%i
執(zhí)行完后,docker命令就可以正常使用了,每新開一個(gè)cmd窗口都需要先設(shè)置環(huán)境變量。
注意:在bat腳本中使用方法二時(shí),直接將FOR語句放入bat腳本中運(yùn)行會(huì)報(bào)錯(cuò),將命令中的%i改為 %%i。
以上這篇Docker容器時(shí)區(qū)調(diào)整操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。