网站建设关于我们,apple 官网,自己房子怎么挂网站做民宿,广告设计模板素材图片版权声明#xff1a;本文为博主chszs的原创文章#xff0c;未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/48212081 Docker认识基础 作者#xff1a;chszs#xff0c;版权所有#xff0c;未经同意#xff0c;不得转载。博主主页#xff1a;http:… 版权声明本文为博主chszs的原创文章未经博主允许不得转载。 https://blog.csdn.net/chszs/article/details/48212081 Docker认识基础 作者chszs版权所有未经同意不得转载。博主主页http://blog.csdn.net/chszs 一、Docker介绍 Docker是一个C/S架构的容器引擎它包括镜像、容器和库这三个重要的概念。 Docker是一个开源平台它包含容器引擎和Docker Hub注册服务器。 1Docker容器引擎 此引擎可以让开发者打包自己的应用和依赖包到一个可移植的容器中然后将其发布到任何流行的Linux机器上。 2Docker Hub注册服务器 用户可以在该服务器上创建自己的镜像库来存储、管理和分享镜像。利用Docker可以实现软件的一次配置、到处运行。 Docker是PaaS提供商dotCloud公司后改名为Docker开源的、基于LXC的高级容器引擎源码托管于GitHub基于GoLang开发以Apache 2.0许可证发布。 Docker的特性 1统一的打包格式 Docker定义了一种统一标准的打包格式可将应用及其依赖打包到单个的镜像。 2交互式Shell Docker可以分配一个虚拟终端并关联到任何容器的标准输入上例如运行一个一次性交互shell。 3版本控制 Docker的版本控制类似于GitDocker可以跟踪一个容器的版本信息查看版本差异提交或回滚版本等。 4组件复用 Docker容器以组件的方式搭建可以利用一个基础镜像构建更多的应用容器。 5共享镜像 Docker用于一个公共的注册服务器无数的开发者上传了他们的镜像这些镜像包罗万象基本上各种应用领域、应用场景都可以找到相应的镜像。 6内容的隔离 文件系统隔离每个进程容器运行在完全独立的根文件系统里 资源隔离可以使用cgroup为每个进程容器分配不同的系统资源 网络隔离每个进程容器运行在自己的网络命名空间里拥有自己的虚拟接口和IP地址。 7日志记录 Docker将会收集和记录每个进程容器的标准流用于实时检索或批量检索。 8写时复制 Docker采用写时复制方式创建根文件系统这让部署变得极其快捷并且节省内存和硬盘空间. 二、容器vs.虚拟机 Docker是容器的一种容器是一种轻量级的虚拟技术重量级的虚拟技术就是虚拟机。 虚拟机是一种基于硬件的虚拟技术它采用指令集的虚拟完全虚拟一整套物理主机包含CPU、内存、磁盘、网卡等硬件设备呈现给用户的是一个物理机的特性。 用户可以在一台主机上安装多个虚拟机每一个虚拟机实例都包含了完整的硬件虚拟层、OS、公共库等。 容器是一种基于操作系统的虚拟技术它运行于操作系统之上的用户空间所有的容器都共用一个系统内核甚至是公共库。容器引擎提供了进程级的隔离让每个容器都像是运行在单独的系统之上但又能共享很多底层的资源。 与虚拟机相比容器更为轻量级、更快速、更易于管理、资源占用更小。 除了Docker场景的容器还有Solaris Zones、BSD jails、OpenVZ和LXC等。 三、Docker的应用场景 下面列举一些Docker典型的应用场景。 1加速本地开发 2自动打包和部署应用 3创建轻量级、私有的PaaS环境 4自动化测试和持续集成/部署 5部署并扩展Web应用、数据库和后端服务器 6创建安全沙盒 7轻量级的桌面虚拟化 四、Docker的组件 Docker采用C/S架构开发整体架构如图所示 包括 1Docker客户端 即Docker的可执行程序它可以通过命令行和API的形式与Docker的守护进程进行通信。 2Docker守护进程 Docker守护进程提供Docker服务。 五、Docker三大核心组件 Docker有三大核心组件镜像、容器和库 1镜像 镜像是一个只读的静态模板保存了容器需要的环境和应用的执行代码。镜像采用分层机制每个镜像都是只读的但可以将写数据的层通过联合文件系统附加到原有的镜像上。这样镜像就很易于存储、传输和更新。 2容器 容器是一个运行时环境是镜像的运行状态是镜像执行的动态表现。容器提供了应用的统一的运行方式创建、开始、停止、重启、销毁。 3库 Docker采用注册服务器来存储和共享用户的镜像库是某个特定用户存储镜像的目录。通常一个用户可以建立多个库来保存自己的镜像。库是注册服务器的一部分注册服务器分公有的和私有的公有的如Docker官方提供的Docker Hub。 六、Docker的度量 Docker是利用容器来实现的一种轻量级的虚拟技术从而在保证隔离性的同时达到节省资源的目的。Docker的可移植性可以让它一次建立到处运行。Docker的度量可以从以下四个方面进行 1隔离性 Docker采用libcontainer作为默认容器代替了以前的LXC。libcontainer的隔离性主要是通过内核的命名空间来实现的有pid、net、ipc、mnt、uts命令空间将容器的进程、网络、消息、文件系统和主机名进行隔离。 2可度量性 Docker主要通过cgroups控制组来控制资源的度量和分配。 3移植性 Docker利用AUFS来实现对容器的快速更新。 AUFS是一种支持将不同目录挂载到同一个虚拟文件系统下的文件系统支持对每个目录的读写权限管理。AUFS具有层的概念每一次修改都是在已有的只写层进行增量修改修改的内容将形成新的文件层不影响原有的层。 4安全性 安全性可以分为容器内部之间的安全性容器与托管主机之间的安全性。 容器内部之间的安全性主要是通过命名空间和cgroups来保证的。 容器与托管主机之间的安全性主要是通过内核能力机制的控制可以防止Docker非法入侵托管主机。 Docker容器使用AUFS作为文件系统有如下优势 1节省存储空间 多个容器可以共享同一个基础镜像存储。 2快速部署 如果部署多个来自同一个基础镜像的容器时可以避免多次复制操作。 3升级方便 升级一个基础镜像即可影响到所有基于它的容器。 4增量修改 可以在不改变基础镜像的同时修改其目录的文件所有的更高都发生在最上层的写操作层增加了基础镜像的可共享内容。