什么是docker

docker是一个开源的容器平台,用于开发、交付和部署 运行应用程序

简单来说 也就是docke他允许开发者将自己的操作环境以及依赖关系打包成一个容器,移动到其他机器上可以供其他人使用,还可以打包成镜像,上传到网络,如果想使用可以随时拉下来。

doker的功能:

  • 资源隔离
  •  轻量级 占有少量资源
  •  一次部署 多处运行

为什么需要docker:

传统的开发问题:
  • 环境(切换/配置)麻烦:

在开发一个产品的途中,时长会出现的问题就是:“在我的电脑上可以运行,而到了另外一个开发人员的电脑上就不能使用的问题

  • 应用之间的冲突(隔离性):

假如我们将开发的两个应用部署到同一个服务器上,如果一个应用出现了问题,导致cpu出问题上升到100%,那么第二个应用也会受到关联

1、docker可以让开发者打包他们的应用以及依赖关系到一个轻量级、可移植的容器中,然后发布到任何流行的linux机器上,也可以实现虚拟化。将环境构建打包成一个镜像发布到网上,想要用这个环境的时候就直接拉取一份就ok了。

2、docker核心思想就是使用容器化技术,打包装箱,每个箱子是互相隔离的。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低

什么是容器化、什么是虚拟化:

虚拟化: 就是将多个相同的物理硬件或软件、虚拟成逻辑的一个整体 
               从而提高资源的利用率并打破物理设备不可分割的情况

容器:将应用程序包含运行环境整体打包成一个标准的应用单元
           实现应用的交付和部署
容器技术: 就是一种应用程序打包技术
容器化:一种将应用程序及其依赖项打包到一个独立、可移植的容器中的一个过程

docker带来的好处
  简化配置 代码流水线 提高开发效率 隔离应用
  整合服务  调试能力 快速部署  多租户环境

Docker的基本组成

镜像(image):docker镜像就好比是一个模板,可以通过这个模板来创建容器服务通过这个镜像可以创建多个容器

容器(container):docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的,启动、停止、删除、基本命令,目前就可以把这个容器理解为就是一个简易的Linux系统。

仓库(repository):仓库就是存放镜像的地方,仓库分为公有仓库和私有仓库

私有 Registry

  •        私有 Registry 通常用于企业内部或个人项目,需要身份验证才能访问。
    • 它可以是本地部署的服务,也可以是托管在云服务上的。

公开 Registry

  •        公开 Registry 任何人都可以访问,无需身份验证。
    • Docker Hub 是最著名的公开 Registry,提供大量的公共镜像供用户使用。

三者的关系:
 仓库是用来存放官方或者私人镜象的
 镜像 是容器运行的源文件
 容器 是运行的镜像 也是具体的应用

过程
从仓库pull拉去一个镜像到本地
run 一个本地镜像 就生成一个容器
容器 commit 就变成一个本地镜像
本地镜像push推送到仓库办成仓库中的镜像

docker  应用场景
   作为云主机使用
   作为服务使用
   做微服务架构使用

docker  特性
     实现交互式shell      
     文件系统隔离
     写时复制和联合文件系统
     资源和网络隔离
     日志记录和变更管理

容器和虚拟机之间的比较

容器 启动 秒级   硬盘使用 MB 级别  接近原生  单机支持上千个容器

 虚拟机  启动分钟级  硬盘GB级别  新能弱于容器   单机支持几十个虚拟机

Docker 架构设计

Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker是C/S(客户端client-服务器server)架构模式。

Docker通过客户端连接守护进程,通过命令向守护进程发出请求,守护进程通过一系列的操作返回结果。

Docker客户端可以连接本地或者远程的守护进程。

Docker客户端和服务器通过socket或RESTful API进行通信。

Docker 容器通过 Docker 镜像来创建,容器与镜像的关系类似于面向对象编程中的对象与类。

Docker 主要有以下几部分组成

Docker Client 客户端     通过命令行或者其他工具使用 Docker API

Docker daemon 守护进程   负责运行docker 内核

Docker Image 镜像  一个特殊的文件系统   用于创建 Docker 容器的模板

Docker 的特性

    交互式Shell:Docker 可分配一个虚拟终端并关联到任何容器的标准输入上

    文件系统隔离:每个进程容器运行在完全独立的根文件系统里

    写时复制:采用写时复制方式创建根文件系统,这让部署变得极其快捷,并且节省内存和硬盘空间

    资源隔离:可以使用 cgroup 为每个进程容器分配不同的系统资源

    网络隔离:每个进程容器运行在自己的网络命名空间里,拥有自己的虚拟接口和 IP 地址

    日志记录:Docker会收集 记录每个进程容器的标准流(stdout/stderr/stdin) 以实时检索或批量检索

    变更管理:容器文件系统的变更可以提交到新的映像中,并可重复使用以创建更多的容器

              无需使用模板或手动配置

Docker 提供服务的两个维度    (改变了软件的构建、交付和运行方式)

    更可靠地将应用从开发环境移动到生产环境。

    通过标准映像格式将软件从本地迁移至云端。

总结
docker:  一个开源的云应用容器平台, 一个轻量级的虚拟化解决方案

容器的三大组件
 仓库 registry 用来存放镜像
 镜像 image  软件和运行环境打包后的自读文件
 容器 container 运行的镜像

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部