容器(Docker)学习文档

Q1、我们为什么需要它是什么/strong>

在接触容器之前,在于云计算相识的过程中,我已然接触了“虚拟机”这一概念以及实际应用,寻找他的一个出发点,某种意义上都是为了对应用程序及运行的环境进行隔离,构建一套能够不依赖于具体环境而运行的方式,或者说另一方面也是为了不让在虚拟机这一环境中所产生的一些错误影响宿主机本身。在拥有虚拟机之后,为什么我们还需要容器这一技术,这是我在看到容器如下类似定义之后,产生的最大疑问/p>

容器:一组受到资源限制,彼此间相互隔离的进程
在翻阅资料后,我愿意给出一个最简单的总结:在不失隔离性的情况下,更具轻量化

模块:
Docker engine包含着主要三部分的内容:
Daemon相信如果你实际使用过Docker在使用过程中,你会频繁看到这个词,当然它也是最主要的部分,它是docker的守护进程,可以认为这是一个收到命令后常驻的server。
用户是使用Docker Client与Docker Daemon建立通信,并发送请求给后者。
REST API是daemon向外的REST接口,而Docker Client(CLI)是Docker向外的命令行接口,这也对应着两种客户访问服务端的方式

图中的另一部分主要区别,就是APP中多个的process,我将其理解为不断更新迭代的过程,正如Docker本身含义所示“码头工人、物件”,我很容易想到并更愿意把它视为“集装箱”,而非简单的“容器”,它意味着模块化的同时,在每次新的命令来临时(镜像改变时),都会重新装箱,叠在之前的层(集装箱)之上,你可以通过日志来实现完整的控制,当你又想要之前的版本时,你会很容易重新拿出下面的“集装箱”,这也某种意义上说明了Docker的优势

Docker原理:
我将其简单概述为以下两点:

1、Namespaces与cgroups
它并不是Docker的成果,而是Linux中用于进行分离资源操作的方法,因此隔离本身事实上是基于Linux内核的,namespace用来做访问隔离,cgroups用来做资源限制。隔离就这样实现了,相比于前面提及的hypervisor的虚拟化技术,它大大降低了复杂度

2、containerd
在前面的过程中我们说Docker依赖于Docker engine,但contained则是后期,docker架构的一个调整,从容器运行时的相关程序从daemon中剥离,向Docker提供运行的API,并通过runC来实际运行容器。

当然广义上说Docker另外的一大技术基础为
UnionFS即镜像技术
unionFS可以把文件系统上多个目录(也叫分支)内容联合挂载到同一个目录下,而目录的物理位置是分开的。
这保证了我们可以整合资源,但如果对资源进行修改,不会影响原始的文件内容,使得操作是单项有效的,当应用于容器时,我们因此可以确认,某个容器对基础镜像的修改会被限制在单个容器内。

因此我们发现,Docker的技术基础中,似乎无时不刻不再强调着一个原则,隔离

简单的使用运行:一个web程序
环境:基于CentOS7

1、安装过程
1)Docker要求CentOS系统内核版本高于3.10,通过 uname –r 命令查看内核版本
2)使用 sudo yum update 命令更新yum包
3)安装需要的软件包

4)安装Docker

5)启动Docker

6)运行 hello-world 映像来验证是否正确

正确安装:

**

Q3、它现在发展到什么程度了呢/h2>

**
我对这个问题的回答更像一个举例子的方式。
我实验的过程是与阿里云相配合的过程。
阿里云的容器相关服务非常丰富,但某种程度上它也意味着复杂以及缺乏系统性的整理,我根据个人理解,将其中的主要应用部分做了一个整理:

它的意义在于可以帮助用户将注意力集中于容器开发、管理本实,而非底层的处理。

文章知识点与官方知识档案匹配,可进一步学习相关知识云原生入门技能树容器(docker)安装docker8608 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年8月4日
下一篇 2020年8月4日

相关推荐