如何檢查Docker容器時區是否與宿主機一致?
1、進入宿主機, 執行以下命令:
# 查看宿主機時間
[root@localhost ~]# date
2018年 06月 27日 星期三 22:42:44 CST
2、進入到容器中,執行以下命令
# 查看容器時間
root@lksjoid909090:/#date
Wed Jul 27 14:43:31 UTC 2018
CST應該是指(China Shanghai Time,東八區時間)
UTC應該是指(Coordinated Universal Time,標準時間)
可以發現,他們相隔了8小時, 宿主機與Docker容器時區不一致。
解決方案:
1、【鏡像未生產前】基礎鏡像 在 Dockerfile 中設置時區:
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
2、【鏡像生成后 && 容器未創建】 創建并啟動容器時:
# 共享主機時間
docker run --name <name> -v /etc/localtime:/etc/localtime:ro ...
3、【鏡像生成后 && 容器啟動】 容器外,宿主機中修改:
docker cp /etc/localtime [容器ID或者NAME]:/etc/localtime
4、【鏡像生成后 && 容器啟動】 容器中
apk add tzdata
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime echo "Asia/Shanghai" > /etc/timezone
補充知識:docker命令報錯error during connect: Get http://2F2F.2Fpipe2Fdocker_engine/v1.36/containers/json: open//.
執行docker ps報錯
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.
報錯信息如下:

解決方法
1.執行命令:
docker-machine env default

2.方法一:
將顯示的命令復制出來進行執行

執行完后,再執行docker ps等命令,即可正常使用
3. 方法二:
只將最后一句
REM @FOR /f “tokens=*” %i IN (‘docker-machine env default') DO @%i
命令去掉REM進行執行,即執行
@FOR /f "tokens=*" %i IN ('docker-machine env default') DO @%i

執行完后,docker命令就可以正常使用了,每新開一個cmd窗口都需要先設置環境變量。
注意:在bat腳本中使用方法二時,直接將FOR語句放入bat腳本中運行會報錯,將命令中的%i改為 %%i。
以上這篇Docker容器時區調整操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。