一文带你读懂容器技术(一):Docker 核心设计理念 |
您所在的位置:网站首页 › 活动目录容器有哪些类型 › 一文带你读懂容器技术(一):Docker 核心设计理念 |
Docker 的操作围绕镜像、容器、仓库三大核心概念。下面我们通过解决三个问题:1、容器是什么;2、容器与虚拟机的区别;3、Docker 的三个核心概念是什么,掌握Docker入门技术。 容器是什么?![]() 容器:在Linux中,容器技术是一种进程隔离的技术,应用可以运行在一个个相互隔离的容器中,与虚拟机相同的是,可以为这些容器设置计算资源限制,挂载存储,连接网络,而与虚拟机不同的是,这些应用运行时共用着一个Kernel。(我们在操作系统中的各项工作其实都是通过某个PID来达成的,包括常用对的bash环境) Docker:由于docker非常的火,很多人一开始把docker等同于容器。Docker实际上是一家公司,在2013年这家公司还叫做DotCloud。Docker是他们公司的一个容器管理产品, 2013年初,dotCloud决定将Docker开源,Docker在短短几个月间风靡全球, DotCloud公司随后也把自己更名为Docker。 容器与虚拟机区别?Docker 是基于 Linux 内核的 Namespace 技术实现资源隔离的,所有的容器都共享主机的内核。其实这与以虚拟机为代表的云计算时代还是有很多区别的,比如虚拟机有着更好的隔离性和安全性,而容器的隔离性和安全性则相对较弱。 ![]() 从上图可以看出,虚拟机是通过管理系统(Hypervisor)模拟出 CPU、内存、网络等硬件,然后在这些模拟的硬件上创建客户内核和操作系统。这样做的好处就是虚拟机有自己的内核和操作系统,并且硬件都是通过虚拟机管理系统模拟出来的,用户程序无法直接使用到主机的操作系统和硬件资源,因此虚拟机也对隔离性和安全性有着更好的保证。 而 Docker 容器则是通过 Linux 内核的 Namespace 技术实现了文件系统、进程、设备以及网络的隔离,然后再通过 Cgroups 对 CPU、 内存等资源进行限制,最终实现了容器之间相互不受影响,由于容器的隔离性仅仅依靠内核来提供,因此容器的隔离性也远弱于虚拟机。 Q1:既然虚拟机安全性这么好,为什么我们还要用容器呢? A1:这是因为容器与虚拟机相比,容器的性能损耗非常小,并且镜像也非常小,而且在业务快速开发和迭代的今天,容器秒级的启动等特性也非常匹配业务快速迭代的业务场景。 Namespace 技术是什么?Namespace 是 Linux 内核用来隔离内核资源的方式,是对全局系统资源的一种封装隔离,使得处于不同 namespace 的进程拥有独立的全局系统资源,改变一个 namespace 中的系统资源只会影响当前 namespace 里的进程,对其他 namespace 中的进程没有影响。 具体的实现方式是把一个或多个进程的相关资源指定在同一个 namespace 中。Linux 内核的 namespace 特性为我们提供了以下资源的隔离能力: ![]() 我们在Linux中输入指令: 代码语言:javascript复制[root@localhost docker]# ll /proc/$$/ns![]() 镜像、容器、仓库,三者之间的联系: ![]() Docker 整体架构采用 C/S(客户端 / 服务器)模式,主要由客户端和服务端两大部分组成。客户端负责发送操作指令,服务端负责接收和处理指令。 Docker客户端和服务端通信有多种方式,既可以在同一台机器上通过UNIX套接字通信,也可以通过网络连接远程通信。 ![]() Docker 客户端其实是一种泛称。其中 docker 命令是 Docker 用户与 Docker 服务端交互的主要方式。 除了使用 docker 命令的方式,还可以使用直接请求 REST API 的方式与 Docker 服务端交互,甚至还可以使用各种语言的 SDK 与 Docker 服务端交互。 Docker 服务端Docker 服务端是 Docker 所有后台服务的统称。其中 dockerd 是一个非常重要的后台管理进程,它负责响应和处理来自 Docker 客户端的请求,然后将客户端的请求转化为 Docker 的具体操作。 Docker服务端的两个至关重要的组件:runC和containerd。 runC是 Docker 官方按照 OCI 容器运行时标准的一个实现。通俗地讲,runC 是一个用来运行容器的轻量级工具,是真正用来运行容器的。containerd是 Docker 服务端的一个核心组件,它是从dockerd中剥离出来的 ,它的诞生完全遵循 OCI 标准,是容器标准化后的产物。containerd通过 containerd-shim 启动并管理 runC,可以说containerd真正管理了容器的生命周期。总结纸上得来终觉浅,后续我们将会通过实操,深入了解Docker容器的基本操作,搭建我们自己的仓库,监控并允许我们的容器。Good Luck! —END— |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |