Docker基础:

1、什么是容器:

    容器是一种基础工具,泛指任何可以用于容纳其它物品得工具,可以部分或完全封闭,被用于容纳,储存,运输物品;物体可以被放置再容器中,而容器则可以保护内存物

2、容器定义:

    例如:我们买了一台计算机的主要目的不是为了运行操作系统而是为了运行某一特定的应用程序如word,httpd或者mysql和redis这样的存储系统等,如下图:一个特定的进程见构造在现代操作系统之上它通常是运行在操作系统的用户空间中的,内核主要是底层硬件的虚拟接口,它可以把底层一组计算设备或者叫计算资源给他做第一步的抽象和分割,从而能支撑在用户空间同时运行很多个进程,而我们反复强调用户空间是进程运行时所处的一个位置,如果这个用户空间能够被分割出来,分给用于容纳1到多个特定的应用程序从而能够实现给根其它用户空间中的应用程序分割开来;这时每个独立的用于运行进程的用户空间就叫做容器,因为它容纳了并且隔离了其它的用户空间,使得进程在当前用户空间运行时与其它用户空间得进程彼此间不互相干扰

3、Linux   Namespaces概念:

    Namespaces是Linux系统得底层概念,在内核层实现,即有一些不同类型得命名空间被部署在核内,各个docker容器运行在同一个docker主进程并且共用同一个宿主机内核,各docker容器运行在宿主机得用户空间,每个容器都要有类似于虚拟机一样的互相隔离的运行空间,但是容器技术是在一个进程内实现运行指定服务的运行环境,并且还可以保护宿主机内核不受其它进程的干扰和影响,如文件系统空间,网络空间,进程空间等。目前主要通过以下技术实现容器运行空间的相互隔离:

4、Ggroup

    如下图:我在同一个内核上做了好几个容器,这些容器间得进程是隔离的,如果运行的容器3里面运行了挖矿的代码,它进而把底层硬件的所有算例全拿走了,剩下的容器能得到1%都不到,所以Ggroup就是来把底层的计算资源、cpu、内存、IO划分成块有效的调派到对应的容器之上,比如我们有8核CPU,我们指定第一个容器只能使用两个,第二个容器两个,第三个容器两个,宿主机两个,这样就算容器里被植入的挖矿的代码,最多也只能耗尽这两个CPU,Cgroup可以理解成计算CPU、内存、IO配额的一种接口。

猜你喜欢

转载自blog.csdn.net/weixin_42864043/article/details/107663892