重学容器32: 理解容器文件系统OverlayFS 2021年7月31日 前面在第9节"Containerd是如何存储容器镜像和数据的"中介绍了,containerd的snapshotter的主要作用就是通过mount各个层为容器准备rootfs。containerd默认配置的snapshot…… 阅读全文
重学容器31: 容器资源限制之限制容器的内存 2021年7月30日 linux memory cgroup子系统 限制容器的内存使用需要借助memory cgroup子系统。 在使用cgroups时需要先挂载,例如在centos下memory cgroup子系统被挂载到了/sys/fs/cgroup/memory下,,在这个目录下是各个…… 阅读全文
重学容器30: 容器资源限制之限制容器的进程数量 2021年7月29日 容器的单进程模型 容器的单进程模型是指推荐在一个容器里只运行一个进程。 容器的单进程模型并不是说容器里只能运行一个进程,而是因为容器本身没有管理多个进程的能力,推荐在一个容器里只运行一个进程。 在正常的Linux操作系统里都有个1号进程init,…… 阅读全文
重学容器29: 容器资源限制之限制容器的CPU 2021年7月28日 在最近25~28节,学习了容器镜像构建的一些实践和技巧,使用Containerd替代Docker后,使用buildkit作为容器镜构建工具,到此对容器镜像构建的学习先告一段落。 在前面第6节学习了容器资源限制背后的技术cgroups的基本概念…… 阅读全文
重学容器28: 容器镜像构建技巧之使用secret给Dockerfile传递敏感信息 2021年7月27日 在构建容器镜像时,有的时候需要在Dockerfile中使用一些敏感信息,例如下面的Dockerfile: 1FROM python:3 2...... 3WORKDIR /usr/src/app 4RUN pip3 install -r /usr/src/app/requirements.txt -i https://username:[email protected]/simple 5...... 这是构建一个python应用镜像的Dockerfile,在从私有pip源安装依赖时需要在Dockerfile中…… 阅读全文
重学容器27: 容器镜像构建技巧之构建体积更小的镜像和多阶段构建 2021年7月26日 在构建容器镜像时,会用到一些技巧以构建出体积更小的镜像,以在镜像分发和容器部署时获得更快的速度。 构建体积更小的镜像 一个镜像是由很多层(Layers)组成的,Dockerfile中的每条指令都会创建镜像层,但只有RUN, COPY, ADD会使镜像的体积…… 阅读全文
重学容器26: Dockerfile代码规范检测工具hadolint 2021年7月25日 上一节学习了一些实际工作中编写Dockerfile的实践经验,本节给大家推荐一款Dockerfile的代码规范检查工具hadolint。 hadolint的项目地址是https://github.com/hadolint/hadolint,它…… 阅读全文
重学容器25: 编写Dockerfile的一些实践经验 2021年7月24日 前面2节学习了容器存储挂载的基础知识,本节开始学习容器镜像构建相关知识。 当使用Containerd作为容器运行时,我们构建容器镜像的工具链发生了变化,前面在《第11节,容器镜像构建工具和方案介绍》中介绍了替代docker build的一些方案…… 阅读全文
重学容器24: nerdctl启动containerd容器存储挂载volume 2021年7月23日 上一节学习了nerdctl在启动containerd时挂载外部存储时支持bind mounts, volumes两种模式,当前0.11.0版本的nerdctl还不支持tmpfs。 本节针对volumes的使用做一个总结和复习。先来看一下volume在使用上的…… 阅读全文
重学容器23: Containerd容器存储挂载简介 2021年7月21日 通过前面14~22节内容,结合Containerd学习了容器网络的一些基础知识,包括容器网络接口CNI以及Calico网络方案的一些内容。 从本节将学习容器持久化存储的相关知识。 容器的本质是一种特殊的进程,它使用namespace进行隔离,使…… 阅读全文