Docker学习(一)基础知识

Docker容器

解决了开发环境和运维环境配置不同的问题,对此给出了一个标准化的解决方案——系统平滑移植,容易虚拟化技术。实现跨屏题啊的无缝接轨,“一次镜像,处处运行”。Docker是基于Go语言实现的云开源项目。在Linux容器技术的基础上发展而来。将应用打成镜像,通过镜像成为运行在Docker容器上面的实例,而Docker容器在任何操作系统上都是一致的,这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好,大大简化了操作。解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容易虚拟化技术。

  • Docker是内核级虚拟化,其不像传统虚拟化技术一样需要额外的Hypervisor支持,所以在一台物理机上可以运行很多个容器实例,可大大提升物理服务器的CPU和内存利用率。

Docker与传统虚拟化方式(虚拟机)的不同之处:

  • 传统虚拟机技术是虚拟出一套硬件后,在骑上云慈宁宫一个完整的从操作系统,在该系统上再运行所需应用进程;
  • 容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便;
  • 每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。

下载

Docker三要素

Docker本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好行程一个可交付的运行环境,这个打包好的运行环境就是image镜像文件。只有通过这个镜像文件才能生成Docker容器实例(类似Java中new出来一个对象)。
image文件可以看作是容器的模板。Docker根据image文件生成容器的实例。同一个image文件,可以生成多个同事运行的容器实例。

  • 镜像(image):
    就是一个只读的模板。镜像可以用来创建Docker容器,一个镜像可以创建多个容器。
    image文件生成的容器实例,本身也是一个文件,称为镜像文件。
  • 容器(container):
    可以把容器看过是一个简易版的Linux环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
    一个容器运行一种服务,当我们需要的时候,就可以通过Docker客户端创建一个对应的运行实例,也就是我们的容器。
  • 仓库(repository):
    是集中存放镜像文件的场所。类似于存放各种jar包的Maven仓库、存放各种git项目的github。
    就是放一堆镜像的地方,我们可以把镜像发布到仓库中,需要的时候再从仓库中拉下来就可以了。

架构

Docker是一个C/S模式的架构,后端是一个松耦合架构,众多模块各司其职。

Docker运行的基本流程为:

  1. 用户是使用Docker Client与Docker Daemon建立通信,并发送请求给后者。
  2. Docker Daemon作为Docker架构中的主题部分,首先提供Docker Server的功能使其可以接受Docker Client的请求。
  3. Docker Engine执行Docker内部的一系列工作,每一项工作都是以一个Job的形式存在。
  4. Job的运行过程中,当需要容器镜像时,则从Docker Registry中下载镜像,并通过镜像管理驱动Graph driver将下载镜像以Graph的形式存储。
  5. 当需要为Docker创建网络环境时,通过网络管理驱动Network driver创建并配置Docker容器网络环境。
  6. 当需要限制Docker容器运行资源或执行用户指令等操作时,则通过Exec driver来完成。
  7. Libcontainer是一项独立的容器管理包,Network drive以及Exec driver都是通过Libcontainer来实现具体对容器进行的操作。

posted on   saihao  阅读(37)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示