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

亡梦爱人 提交于 2019-12-04 09:18:27

命令

清理none镜像

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

强制清空

docker rmi $(docker images -q) -f

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 报错

Error response from daemon: service endpoint with name docker-statsd-influxdb-grafana already exists.

Docker Error response from daemon: service endpoint with name.

处理

docker network inspect <network name>
docker network disconnect <network name> <container id/ container name>

例如

docker network disconnect --force bridge docker-statsd-influxdb-grafana

或者直接重启docker

sudo service docker restart
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!