Docker 小技巧

构建更小的镜像

我们的代码往往有 dependency 和 dev-dependency, docker 镜像一样,有些库只有在编译和开发的时候需要,就没必要打包到镜像里了,可以使用 multistage build 来吧构建分成很多步:

使用 from as 和 copy –from

# Compile
FROM golang:1.9.0 AS builder
COPY . .
WORKDIR /go/src/v9.git...com/.../k8s-monitor
RUN make build
RUN mv k8s-monitor /root

# Package
# Use scratch image
FROM scratch
WORKDIR /root/
COPY --from=builder /root .
EXPOSE 8080
CMD ["/root/k8s-monitor"]

还可以使用 dive

还可以使用 dive 来查看每一层的大小。https://github.com/wagoodman/dive

还可以使用 docker-slim 来压缩镜像:https://github.com/docker-slim/docker-slim

Python Pip:pip install --no-cache-dir -r requirements.txt

Docker 日志过大导致磁盘占满

docker 默认使用的是 json driver, 也就是说会把打到标准输出的日志以 json 文件的形式存储起来,时间一长,如果日志也多的话,很容易就会产生几个 G 的日志。

在 /etc/docker/daemon.json 中增加如下配置:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3" 
  }
}

监控系统容器状态 ctop

Mac:

brew install ctop

Linux:

sudo wget https://github.com/bcicen/ctop/releases/download/v0.7.5/ctop-0.7.5-linux-amd64 -O /usr/local/bin/ctop
sudo chmod +x /usr/local/bin/ctop

还可以使用 lazydocker: https://github.com/jesseduffield/lazydocker

Docker 删除镜像“Permission Denied”

sudo aa-remove-unknown

这种一般是因为使用了 ubuntu snap 安装的 docker。建议 snap remove docker 然后安装官方版。

Web tty

https://github.com/wrfly/container-web-tty

删除所有停止的容器

docker rm `docker ps -aq`

删除所有没有 tag 的镜像

docker rmi `docker images | grep "^<none>" | awk '{print $3}'`

进入运行中的镜像

docker exec -it CONTAINER_NAME bash

杀死所有运行中的镜像

docker kill $(docker ps -q)

删除所有镜像

docker rmi $(docker images -q)

查看日志的时候只显示最近的

docker logs --tail 10 container

参考

  1. https://stackoverflow.com/questions/52119832/how-to-tail-a-docker-log-from-the-current-position-in-the-log-without-seeing-the
  2. https://stackoverflow.com/questions/49104733/docker-on-ubuntu-16-04-error-when-killing-container
  3. https://docs.docker.com/config/containers/logging/json-file/
  4. https://mp.weixin.qq.com/s?__biz=MzU4MzA0MTc3Nw==&mid=2247484232&idx=1&sn=88654ca57d06fadb59b7a40a8bb1f338
  5. https://github.com/bcicen/ctop
  6. Docker 的一些坑

及时获取更新,请关注公众号“爬虫技术学习”(spider-learn)

多年大厂求职&面试官经验,简历付费优化,¥ 500/次。

公众号“爬虫技术学习(spider-learn)”

About 逸飞

后端工程师

发表评论

邮箱地址不会被公开。 必填项已用*标注