
Docker 架构与进程管理
文章平均质量分 86
dockerrrrrrrrrrrrrrrrrrrr
富士康质检员张全蛋
人生实难,唯有自渡。只有接受了真实现的现状和真实的自己,调整好心态,才能脚踏实地的活着,然后去发现角落处的那些惊喜和美好,去相信一切苦难困境都会过去!“即使身处阴沟,也要记得仰望星空”。
展开
-
Kubelet CRI 容器运行时 Containerd
如果是通过kubelet去调用docker的话,这个请求是在kubelet的cri接口调用docker-shim,docker-shim再连接到docker-daemon,docker-daemon里面红圈的这部分才是有用的,也就是和image相关的操作,以及正真去去调用containerd的这部分操作是有用的,上面存储网络,已经docker提供的cli这些都是不需要的,那么这些都是冗余的。不再使用docker自身的daemon了,但是可以用你docker自身所带的containerd的。...原创 2022-07-26 06:02:56 · 1485 阅读 · 0 评论 -
Docker OCI容器标准和引擎架构
docker利用namespace技术,可以将进程放到一个隔离环境里面,同时cgroup技术将容器进程限制资源配额,可以通过pveryfs来模拟一个完整的这种文件系统。那么业界又是如何定义这一切的呢?这就是OCI的容器标准了。OCl 容器标准Open Container Initiativedocker当时认为它是标准,但是docker本生实现是很重的,当kubernetes对接docker的时候会发现很多东西对不上的,中间功能会有相互冲突和覆盖的地方,所以kubernetes起了一个OCI的规范,它尝试去原创 2022-06-19 20:55:25 · 1734 阅读 · 0 评论 -
Linux Signal
信号的基本使用场景:使用ctrl+c中止一个程序,或者使用kill pid命令杀掉一个进程。Linux 信号机制基本上每个同学都用过,但是信号的具体实现机制还是有很多人不清楚的。在很多人的概念中信号是一种异步机制,像中断一样。但是除了硬中断,信号也是由中断实现的吗?如果不是中断,系统又怎么样来利用软件机制模拟类似如异步中断的动作?本文的代码分析基于 Linux Kernel 3.18.22,最好的学习方法还是 “read the fucking source code”1.信号的响应时机...转载 2021-10-08 20:31:08 · 945 阅读 · 0 评论 -
Docker 容器安全(1):我的容器真的需要privileged权限吗?
容器安全是一个很大的话题,容器的安全性很大程度是由容器的架构特性所决定的。比如容器与宿主机共享 Linux 内核,通过 Namespace 来做资源的隔离,通过 shim/runC 的方式来启动等等。这些容器架构特性,在你选择使用容器之后,作为使用容器的用户,其实你已经没有多少能力去对架构这个层面做安全上的改动了。你可能会说用Kata Container、gVisor 就是安全“容器”了。不过,Kata 或者 gVisor 只是兼容了容器接口标准,而内部的实现完全是另外的技术了。那么对于使用容器的.转载 2021-09-11 14:56:42 · 4521 阅读 · 0 评论 -
Docker 理解进程(3):为什么我在容器中的进程被强制杀死了?
今天我们来讲容器中 init 进程的最后一讲,为什么容器中的进程被强制杀死了。理解了这个问题,能够帮助你更好地管理进程,让容器中的进程可以 graceful shutdown。我先给你说说,为什么进程管理中做到这点很重要。在实际生产环境中,我们有不少应用在退出的时候需要做一些清理工作,比如清理一些远端的链接,或者是清除一些本地的临时数据。这样的清理工作,可以尽可能避免远端或者本地的错误发生,比如减少丢包等问题的出现。而这些退出清理的工作,通常是在 SIGTERM 这个信号用户注册的 handle..转载 2021-09-11 13:49:45 · 2284 阅读 · 0 评论 -
Linux 进程和线程 内存访问以及调度
进程和线程我们先从 Linux 的进程谈起,操作系统要运行一个可执行程序,首先要将程序文件加载到内存,然后 CPU 去读取和执行程序指令,而一个进程就是“一次程序的运行过程”,内核会给每一个进程创建一个名为task_struct的数据结构,而内核也是一段程序,系统启动时就被加载到内存中了。[root@docker ~]# ls /boot/config-3.10.0-693.el7.x86_64 grub2转载 2021-09-08 20:19:56 · 478 阅读 · 0 评论 -
进程状态 为什么容器里有这么多僵尸进程?
今天我们来聊一聊容器里僵尸进程这个问题。说起僵尸进程,相信你并不陌生。很多面试官经常会问到这个知识点,用来考察候选人的操作系统背景。通过这个问题,可以了解候选人对 Linux 进程管理和信号处理这些基础知识的理解程度,他的基本功扎不扎实。所以,今天我们就一起来看看容器里为什么会产生僵尸进程,然后去分析如何怎么解决。通过这一讲,你就会对僵尸进程的产生原理有一个清晰的认识,也会更深入地理解容器 init 进程的特性。问题再现我们平时用容器的时候,有的同学会发现,自己的容器运行久了之...转载 2021-08-05 23:15:04 · 1442 阅读 · 0 评论 -
The differences between Docker, containerd, CRI-O and runc
DockerWe have to start with Docker because it’s the most popular developer tool for working with containers. And for a lot of people, the name “Docker” itself is synonymous with the word “container”.Docker kick-started this whole revolution. Docker cre转载 2021-07-29 10:50:22 · 309 阅读 · 0 评论 -
Docker 理解进程(1):为什么我在容器中不能kill 1号进程?
问题再现接下来,我们一起再现用 kill 1 命令重启容器的问题。我猜你肯定想问,为什么要在容器中执行 kill 1 或者 kill -9 1 的命令呢?其实这是我们团队里的一位同学提出的问题。这位同学当时遇到的情况是这样的,他想修改容器镜像里的一个 bug,但因为网路配置的问题,这个同学又不想为了重建 pod 去改变 pod IP。如果你用过 Kubernetes 的话,你也肯定知道,Kubernetes 上是没有 restart pod 这个命令的。这样看来,他似乎只能让 pod ...原创 2021-07-21 08:25:22 · 5333 阅读 · 7 评论 -
Docker 组件基本介绍
Docker Cli供用户使用的命令行工具,负责请求 docker API 与 dockerd 交互,使得用户可以便捷友好的操作 docker。Dockerd监听 Docker API 请求,通过 containerd 管理 container 生命周期。dockerd 在启动的时候会拉起 containerd,并与 containerd 保持通信。$psaux|grepdockerd/usr/bin/dockerd-Hfd://--containerd=/r...转载 2021-03-25 17:17:31 · 1290 阅读 · 0 评论 -
在Kubernetes 1.20版本中不推荐使用Docker !
容器核心技术容器核心技术是指能够让 container 在 host 上运行起来的那些技术。这些技术包括容器规范、容器 runtime、容器管理工具、容器定义工具、Registry 以及 容器 OS,下面分别介绍。容器规范容器不光是 Docker,还有其他容器,比如 CoreOS 的 rkt。为了保证容器生态的健康发展,保证不同容器之间能够兼容,包含 Docker、CoreOS、Google在内的若干公司共同成立了一个叫 Open Container Initiative(OCI) 的.转载 2021-03-15 11:53:26 · 2554 阅读 · 1 评论 -
Docker 容器运行时runtime
容器核心技术容器核心技术是指能够让 container 在 host 上运行起来的那些技术。这些技术包括容器规范、容器 runtime、容器管理工具、容器定义工具、Registry 以及 容器 OS,下面分别介绍。容器规范容器不光是 Docker,还有其他容器,比如 CoreOS 的 rkt。为了保证容器生态的健康发展,保证不同容器之间能够兼容,包含 Docker、CoreOS、Google在内的若干公司共同成立了一个叫 Open Container Initiative(OCI).原创 2021-03-11 14:18:18 · 5989 阅读 · 0 评论 -
组件组成:剖析 Docker 组件作用及其底层工作原理
我简单介绍了 Docker 架构的形成,相信你已经对 Docker 的架构有了一个整体的认知。这一讲我将带你深入剖析 Docker 的各个组件的作用及其底层的实现原理。首先我们来回顾一下 Docker 的组件构成。Docker 的组件构成Docker 整体架构采用 C/S(客户端 / 服务器)模式,主要由客户端和服务端两大部分组成。客户端负责发送操作指令,服务端负责接收和处理指令。客户端和服务端通信有多种方式,即可以在同一台机器上通过UNIX套接字通信,也可以通过网络连接远程通信。.转载 2021-01-05 20:26:22 · 2027 阅读 · 0 评论