6

Docker原理研究

 2 years ago
source link: https://lihui.net/docker-init.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Docker原理研究

1月 11, 2021 2013点热度 1人点赞 0条评论

20210111223249.png

为何要了解原理? 了解原理对于Docker的学习使用有什么好处吗? Docker和其他的虚拟化(比如KVM等虚拟化的方式)有什么区别? 为啥现在人们都开始用Docker了?

首先来说 如果实际使用的话, 涉及到简单的使用方面,其实并不会涉及到原理的问题, 一般的软件也好, 编程语言也好, 其主要目的是为了让人更少的关心原理的问题,将更多的精力放在处理业务逻辑上, 对于原理方面的问题, 最好可以一点都不用考虑, 那对我们来说了解原理有什么好处呢? 花时间了解,很少使用的原理到底值不值?

我认为,了解原理是对问题本质的一种把握, 其实事情都有相似的地方, 软件的产生都有它存在的意义和目的, Docker解决了什么问题呢? 这个问题好像并没有什么标准的方案? 我在此写一下我自己的看法.

首先解决的是环境不一致的问题, 常见的情况如下:

A: 你的程序跑不起来啊?

B: 不可能的,在我的机器上好好的,怎么在你的机器上不行了呢? 肯定是你系统环境和我的环境不一致造成的.

第一个问题: 环境不一致的问题.

A: 我的应用为啥自从你的应用上线后就不好使了? 是不是你的应用在这台服务器做了什么?

B: 我修改了
```,可能对环境造成了影响,没办法的,**环境无法隔离**啊.

第二个问题: 同一台服务器环境无法隔离,如果采用虚拟化(尤指虚拟机),则会出现下面的情况

A: 为啥我应用很小,还需要再虚拟机上跑, 还得浪费一个装操作系统的资源,而且启动一个虚拟机还这么慢.

B: 这没办法,服务机的虚拟化解决的是资源调配的问题,Docker解决的是应用的开发,测试和部署的问题.

第三个问题: 服务器虚拟化浪费资源,且启动启动过程慢

所以Docker解决的是什么问题: 1. 隔绝物理硬件差异性和系统差异性 2. 快速分发和部署

那Docker的原理是什么呢?

Docker使用Go语言开发, 使用Linux内核和内核的功能(Cgroup和namspace)来分割进程,以便各进程相互独立运行,Cgroups是Linux的尼日河功能,它让两件事情变为可能,限制Linux进程组的资源占用(内存 CPU);为进程组制作PID UTS IPC 网络 用户及转载命名空间, 而采用Union FS 等技术 可以实现将一个文件系统挂载到其他的文件系统之上.由此可以将系统的进程 网络 文件系统进行隔离,从而实现Docker的环境的隔离.

  1. https://juejin.cn/post/6844904039180681229
  2. https://www.jianshu.com/p/7a58ad7fade4
本作品采用 知识共享署名 4.0 国际许可协议 进行许可

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK