您的位置:首页 > 运维架构 > Docker

docker 相关问题和快速使用命令

2017-05-17 00:00 477 查看
摘要: 1.和系统时间差8个小时

命令

清理none镜像

docker rmi $(docker images -f "dangling=true" -q)

docker时间问题

日志打印时间和系统时间差8个小时

项目中打印日志时间和系统外部用date命令打印的时间差了8个小时。

问题原因:

外部虽然修改了时区和时间,但是docker容器中的时间并没有修复,所以需要将外部的文件引入到内部里。

解决的方式在dockerfile 里添加一句

RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

但是docker 好像不能直接从外部copy, 所以上面这个一般不能成功

所以需要将
/usr/share/zoneinfo/Asia/Shanghai
, Shanghai拷贝到和Dockerfile同一个目录

然后使用命令

COPY Shanghai /etc/localtime

这个时候docker 里面的utc时间就转换成了中国时间,就不会少了8个小时

使用alpine修改时区问题

上面修改时区的 在使用alpine的时候处理怎么都不能转换成功,google到一个解决方法

Bug #5543

docker run -it --rm alpine /bin/sh  //进入你自己要修改的容器中
/ # date
Sun May 8 20:46:18 UTC 2016
/ # apk add -U tzdata
fetch http://dl-cdn.alpinelinux.org/alpine/v3.3/main/x86_64/APKINDEX.tar.gz fetch http://dl-cdn.alpinelinux.org/alpine/v3.3/community/x86_64/APKINDEX.tar.gz (1/1) Installing tzdata (2015g-r0)
Executing busybox-1.24.1-r7.trigger
OK: 8 MiB in 12 packages
/ # cp /usr/share/zoneinfo/Europe/Berlin /etc/localtime
/ # date
Sun May 8 22:46:45 CEST 2016
/ #

根据这个例子我的修改是

docker exec -it b961dccc5807 /bin/sh

date //Sat Sep  9 11:26:48 UTC 2017

apk add -U tzdata

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

date  // Sat Sep  9 19:30:55 CST 2017

但是这样每次需要去改容器,就想怎么把这个写到Dockerfile中

然后搜到了这篇 (Linux下修改时区)[http://www.itfanr.cc/2017/02/23/modify-timezone/]

Docker + Alpine 下修改utc时间为cst时间

RUN apk update && apk add ca-certificates && \
apk add tzdata && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone

但是这个还是不能用,所以改成了下面这种形式,然后就可以了

RUN apk add -U tzdata && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Docker